概述
- 在数据库中表名一般以:’t_表名’或者’tbl_表名’开始
- 增删改查:CRUD操作
创建表
语法格式
1 2 3 4 5
| create table 表明{ 字段名1 数据类型, 字段名2 数据类型, ... }
|
MySQL当中字段的数据类型
- int 整数型
- bigint 长整型(long)
- float 浮点型(Java中的float 和 double)
- char 定长字符串(String)
- varchar 可变长字符串(StringBuilder和StringBuffer)
- date 日期类型 (对应java.sql.Date类型)
- BLOB 二进制大对象(存图片、视频等流媒体信息)Binary Large OBject
- CLOB 字符大对象(存储较大文本,比如可以存储4G的字符串)Character Large OBject
- ……
char 和 varchar 如何选择
比如性别、生日等采用char
比如简介、姓名等采用varchar
创建学生表
信息简要
学生信息包括:
- 学号:bigint
- 姓名:varchar
- 性别:char
- 班级编号:varchar
- 生日:char/date
sql语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| mysql> create table t_student( -> no bigint, -> name varchar(255), -> sex char(1), -> classno varchar(255), -> birth char(10) -> ); Query OK, 0 rows affected (0.04 sec)
mysql> show tables; + | Tables_in_sunlie | + | dept | | emp | | salgrade | | t_student | | t_user | + 5 rows in set (0.00 sec)
mysql> desc t_student; + | Field | Type | Null | Key | Default | Extra | + | no | bigint | YES | | NULL | | | name | varchar(255) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | classno | varchar(255) | YES | | NULL | | | birth | char(10) | YES | | NULL | | + 5 rows in set (0.00 sec)
|
关于默认
- 在建表的时候没有指定默认值,则默认为NULL
- 格式:(字段名 数据类型 default 数据,)
向表中插入数据
语法格式
字段名和值的数量相同,数据类型相同
1
| insert into 表名(字段名1,字段名2,字段名3, ...) values(值1, 值2, 值3, ...);
|
向 t_student 表中插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| mysql> insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban','1950-10-12'); Query OK, 1 row affected (0.00 sec)
mysql> select * from t_student; + | no | name | sex | classno | birth | + | 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 | + 1 row in set (0.00 sec)
// t_student后的字段名可以省去 mysql> insert into t_student values(1,'zhangsan','1','gaosan1ban','1950-10-12'); Query OK, 1 row affected (0.00 sec)
mysql> select * from t_student; + | no | name | sex | classno | birth | + | 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 | + 1 row in set (0.00 sec)
|
一行插入多条数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| mysql> insert into t_student -> values -> (1,'zhangsan','1','gaosan1ban','1950-10-12'), -> (2,'lisi','1','gaosan1ban','1950-10-13'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t_student; + | no | name | sex | classno | birth | + | 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 | | 2 | lisi | 1 | gaosan1ban | 1950-10-13 | + 2 rows in set (0.00 sec)
|
复制表
语法格式
1
| create table 表名 as (select语句);
|
复制emp表
1 2 3
| mysql> create table emp1 as (select * from emp); Query OK, 14 rows affected, 2 warnings (0.02 sec) Records: 14 Duplicates: 0 Warnings: 2
|
将查询结果复制入表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| mysql> create table dept1 as (select * from dept); Query OK, 4 rows affected (0.01 sec) Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from dept1; + | DEPTNO | DNAME | LOC | + | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | + 4 rows in set (0.00 sec)
mysql> insert into dept1 (select * from dept); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from dept1; + | DEPTNO | DNAME | LOC | + | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | + 8 rows in set (0.00 sec)
|
修改表中数据
语法格式
更新所有数据不加条件即可
1
| update 表名 set 字段名1=值1, 字段名2=值2 where 条件;
|
修改部门10的LOC改为’SHANGHAI’,部门名称修改为’RENSHIBU’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| mysql> update dept1 set loc = 'SHANGHAI', dname = 'RENSHIBU' where deptno = 10; Query OK, 2 rows affected (0.01 sec) Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from dept1; + | DEPTNO | DNAME | LOC | + | 10 | RENSHIBU | SHANGHAI | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 10 | RENSHIBU | SHANGHAI | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | + 8 rows in set (0.00 sec)
|
修改表结构
表设计好后很少更改,在实际开发中很少用到…
删除表中的数据
语法格式
没有条件全部删除
1
| delete from 表名 where 条件;
|
删除10部门的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| mysql> delete from dept1 where deptno = 10; Query OK, 2 rows affected (0.00 sec)
mysql> select * from dept1; + | DEPTNO | DNAME | LOC | + | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | + 6 rows in set (0.00 sec)
|
删除大表(重点)
删前再三确认…
不可回滚 永久丢失
把表的字段啥的都给剪掉了…
1 2 3 4 5
| mysql> truncate table emp1; Query OK, 0 rows affected (0.03 sec)
mysql> select * from emp1; Empty set (0.00 sec)
|
删除表
语法格式
1 2
| drop table 表名; drop table if exists 表名; //oracle 不支持
|
删除 t_student 表
1 2
| mysql> drop table if exists t_student; Query OK, 0 rows affected (0.02 sec)
|