MySQL---建表添加语句

  • 创建学生表,表名student,根据需求,需要存储学号,姓名,性别、生日4列信息:

  1. mysql -uroot -p               ---以root用户本地连接MYSQL数据库
  2. mysql>show databases;  --查看当前可以使用哪些数据库
  3. mysql>use test;               --使用test数据库
  4. mysql>show tables;        --查看数据库下有哪些表
  5. mysql>create table student (sno int,sname varchar(20),sex char(1),birth date);            --创建学生表, 包括4列信息
  6. 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

  1. null是SQL语言中的特殊值
  2. null值代表不确定,数据类型未知
  3. 属于不明确、状态未知的数据
  4. 上例中向表中插入一行数据,没有指定‘李四’ 的生日,而且‘birth’这一列没有指定默认值,会用 null 来填充
  • DML-insert语句

向student表中一次添加2名学生信息

  1. 学号3,王五,男,1996-05-12;

  2. 学号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)
  1. Insert into 表名 (列名1,列名2,....) values(列1对应值,列2对应值,....);
  2. Insert into 表名 values(列1对应值,列2对应值,....,列N对应值);   不指定列名需要在values中指定所有列对应的值,顺序不能错
  3. 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其它用法

  1. 基于已有数据表创建新表并复制所有数据

create table student1 as select * from student; (CTAS建表方式)

  1. 基于已有数据表创建新表并复制部分数据

create table student2 as select * from student where gender='女';

  1. 基于已有数据库创建新表仅复制表结构不包括行数据

create table student3 as select * from student where 1=2;

create table student4 like student; (MYSQL专有语法)

 

weibo@:白菜先森

你可能感兴趣的:(数据库)