-
创建学生表,表名student,根据需求,需要存储学号,姓名,性别、生日4列信息:
- mysql -uroot -p ---以root用户本地连接MYSQL数据库
- mysql>show databases; --查看当前可以使用哪些数据库
- mysql>use test; --使用test数据库
- mysql>show tables; --查看数据库下有哪些表
- mysql>create table student (sno int,sname varchar(20),sex char(1),birth date); --创建学生表, 包括4列信息
- mysql>show tables; mysql>desc student; --查看student表列的信息
-
向student表中添加学生信息,学号1,张三,男,1995-10-23
mysql> insert into student (sno,sname,sex,birth) values(1,'张三','男','1995-10-23');
Query OK, 1 row affected (0.00 sec)
mysql> select * from student;
+------+-------+------+------------+
| sno | sname | sex | birth |
+------+-------+------+------------+
| 1 | 张三 | 男 | 1995-10-23 |
+------+-------+------+------------+
1 row in set (0.00 sec)
-
向student表中添加学生信息,学号2,李四,女,不填写生日
mysql> insert into student (sno,sname,sex,birth) values(2,'李四','女','1995-10-23');
Query OK, 1 row affected (0.01 sec)
mysql> select * from student;
+------+-------+------+------------+
| sno | sname | sex | birth |
+------+-------+------+------------+
| 1 | 张三 | 男 | 1995-10-23 |
| 2 | 李四 | 女 | 1995-10-23 |
+------+-------+------+------------+
2 rows in set (0.00 sec)
-
SQL – 空值 null
- null是SQL语言中的特殊值
- null值代表不确定,数据类型未知
- 属于不明确、状态未知的数据
- 上例中向表中插入一行数据,没有指定‘李四’ 的生日,而且‘birth’这一列没有指定默认值,会用 null 来填充
-
DML-insert语句
向student表中一次添加2名学生信息
-
学号3,王五,男,1996-05-12;
-
学号4,赵六,性别未知,1996-03-15
mysql> insert into student values(3,'王五','男','1996-05-12'),(4,'赵六',null,'1996-3-15');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from student;
+------+-------+------+------------+
| sno | sname | sex | birth |
+------+-------+------+------------+
| 1 | 张三 | 男 | 1995-10-23 |
| 2 | 李四 | 女 | 1995-10-23 |
| 3 | 王五 | 男 | 1996-05-12 |
| 4 | 赵六 | NULL | 1996-03-15 |
+------+-------+------+------------+
4 rows in set (0.00 sec)
- Insert into 表名 (列名1,列名2,....) values(列1对应值,列2对应值,....);
- Insert into 表名 values(列1对应值,列2对应值,....,列N对应值); 不指定列名需要在values中指定所有列对应的值,顺序不能错
- Insert into 表名 values(列1对应值,列2对应值,....,列N对应值),(列1对应值,列2对应值,....,列N对应值),(列1对应值,列2对应值,....,列N对应值).....; 一次插入多行,每行用逗号隔开,写法仅限于MYSQL数据库
-
DML-update语句示例:
把sno等于0的性别修改为‘女’
mysql> update student set sex='女' where sno=0;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
update 表名 set 列1=列1值, 列2=列2值 where 列N=列N值;
一般更新语句需要加上where子句已定位要修改的行,如果不加将会修改所有行相应的列;如果修改多个列对应的值,用“逗号”隔开各个列 。
-
DML-delete语句示例:
删除sno=0的行
mysql> delete from student where sno=2;
delete from 表名 where 列N=列N值;
有些数据库如oracle可以省略delete后面的from,mysql不可以;一般删除语句需要加上where子句已定位要删除的行,如果不加会删除整个表的所有行。
-
DDL建表语句CREATE TABLE其它用法
- 基于已有数据表创建新表并复制所有数据
create table student1 as select * from student; (CTAS建表方式)
- 基于已有数据表创建新表并复制部分数据
create table student2 as select * from student where gender='女';
- 基于已有数据库创建新表仅复制表结构不包括行数据
create table student3 as select * from student where 1=2;
create table student4 like student; (MYSQL专有语法)
weibo@:白菜先森