文章目录
- 一、表的创建
- 1、常用数据类型
- 2、示例
- 二、表数据的增删改
- 1、添加:insert
- 2、修改:update
- 3、删除:delete
- 三、表结构变更
- 四、表的复制
- 五、安全管理
- 创建用户
- 设置访问权限
一、表的创建
语法格式如下:create table 表名(字段名 数据类型(长度约束),...);
。
1、常用数据类型
类型 | 解释 |
| 整型 |
| 长整型 |
| 定长字符串,存储空间固定 |
| 变长字符串,存储空间等于实际数据空间 |
| 数值型 |
| 数值型 |
| 日期型,格式为:年-月-日 |
| 日期型,格式为:年-月-日 时:分:秒 |
| 日期型,格式为:时:分:秒 |
| 二进制大对象,适合音频、图片 |
| 字符大对象,适合大文本 |
2、示例
创建student表:学号、姓名、班级、所属学校、性别
create table student(
id int(10) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
class varchar(255),
school char(19) DEFAULT 'YuCai Middle School',
gender char(1),
PRIMARY KEY(id)
);
注释
- 字段可以在创建时指定默认值,如果不指定默认值为NULL。
二、表数据的增删改
1、添加:insert
语法格式如下:
insert into 表名(字段名,...) values(对应的赋值,...);
-
insert into 表名 select语句;
:将select
的查询结果作为数据插入到表中。
注释
- 如果不指定全部的字段名,除了已赋值的字段,余下的为默认值;
- 字段名和对应的值顺序上要一一对应;
- 字段名的顺序没有必要跟建表时一致;
- 如果想一次性插入多条数据,
values
后可以有多个,
连接的小括号; - 如果省略字段名,赋值必须要与创建表时的字段顺序对应,且即便已经有默认值的字段也要赋值。
示例insert into student(id,name,class,gender) values(1,'Alice','1-1','M');
mysql> select * from student;
//1-1表示1年级1班,M表示男性
+------+-------+-------+---------------------+--------+
| id | name | class | school | gender |
+------+-------+-------+---------------------+--------+
| 1 | Alice | 1-1 | YuCai Middle School | M |
+------+-------+-------+---------------------+--------+
给date型数据赋值的方法
- 按照规定的格式给出日期:例如
'2000-01-01'
就是合适的表达方式; - 格式转换,例如
str_to_date('2000-01-01','%Y-%m-%d')
; -
now()
获取当前日期或时间。
2、修改:update
语法格式如下:update 表名 set 字段名=值,... where 条件
,如果不加条件则修改表中字段对应的所有数据。
示例
插入时不小心输错了Alice的性别,修改如下:update student set gender='F' where id=1;
。
mysql> select * from student;
+------+-------+-------+---------------------+--------+
| id | name | class | school | gender |
+------+-------+-------+---------------------+--------+
| 1 | Alice | 1-1 | YuCai Middle School | F |
+------+-------+-------+---------------------+--------+
3、删除:delete
语法格式如下:delete from 表名 where 条件;
,如果不加条件则删除表中所有数据,这种方式可回滚,不是永久性的删除。如果想要永久删除数据,截断表,可用truncate table 表名
。
如果要删除表,可用drop table 表名
或drop table if exists 表名
。
三、表结构变更
// 在col_name2后新增一列:col_name1
ALTER TABLE tbl_name
ADD col_name1 type
AFTER col_name2;
// 重命名表
RENAME TABLE tbl_name TO new_tbl_name;
四、表的复制
语法格式如下:create table 表名 as select语句;
表示将select
的查询字段当作一张新表,同时数据也被复制过去。
示例create table student_copy as select id,name from student;
//查询表结构
mysql> desc student_copy;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
//查询表中所有数据
mysql> select * from student_copy;
+------+-------+
| id | name |
+------+-------+
| 1 | Alice |
+------+-------+
五、安全管理
mysql
数据库有一个名为user
的表,它包含所有用户账号。user
表有一个名为user
的列,它存储用户登录名。
创建用户
CREATE USER user_name IDENTIFIED BY 'password';
密码需包含大小写字母、数字、特殊字符。
设置访问权限
SHOW GRANTS FOR user@host
显示用户的权限,USAGE ON *.*
表示没有任何权限。
GRANT SELECT/UPDATE... ON db_name.tbl_name TO usesr@host
为用户添加数据库.表的访问权限。
表的C(create)R(read)U(update)D(delete)就介绍到这里,