文章目录

  • 一、表的创建
  • 1、常用数据类型
  • 2、示例
  • 二、表数据的增删改
  • 1、添加:insert
  • 2、修改:update
  • 3、删除:delete
  • 三、表结构变更
  • 四、表的复制
  • 五、安全管理
  • 创建用户
  • 设置访问权限


一、表的创建

语法格式如下:create table 表名(字段名 数据类型(长度约束),...);

1、常用数据类型

类型

解释

int(长度)

整型

bigint(长度)

长整型

char(长度)

定长字符串,存储空间固定

varchar(长度)

变长字符串,存储空间等于实际数据空间

double(有效数字位数,小数位)

数值型

foat(有效数字位数,小数位)

数值型

date

日期型,格式为:年-月-日

datetime

日期型,格式为:年-月-日 时:分:秒

time

日期型,格式为:时:分:秒

blob

二进制大对象,适合音频、图片

clob

字符大对象,适合大文本

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

语法格式如下:

  1. insert into 表名(字段名,...) values(对应的赋值,...);
  2. insert into 表名 select语句;:将select的查询结果作为数据插入到表中。

注释

  1. 如果不指定全部的字段名,除了已赋值的字段,余下的为默认值;
  2. 字段名和对应的值顺序上要一一对应;
  3. 字段名的顺序没有必要跟建表时一致;
  4. 如果想一次性插入多条数据,values后可以有多个,连接的小括号;
  5. 如果省略字段名,赋值必须要与创建表时的字段顺序对应,且即便已经有默认值的字段也要赋值。

示例
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型数据赋值的方法

  1. 按照规定的格式给出日期:例如'2000-01-01'就是合适的表达方式;
  2. 格式转换,例如str_to_date('2000-01-01','%Y-%m-%d');
  3. 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)就介绍到这里,