mysql.基础01
01. DDL
> 查询所有数据库: show databases;
> 查询当前数据库: select database(); //括号是必须要加的
> 创建数据库: create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则]
-> 关于字符串: utf8 一个汉字存3字节,但有些特殊符号会存4字节,所以会使用 utf8md4 做为字符集
> 删除: drop database [if exists] 数据库名
> 使用: use 数据库名;
> 查看当前数据库所有的表: show tables;
> 查询表结构: desc 表名;
> 查询指定表的建表语句: show create table 表名;
> 创建数据表
** mysql中的数据类型 (id tinyint unsigned -- 表示:新建表时,创建的是一个无符号珠 tinyint 字段 id )
> 添加字段: alter table 表名 add 字段名 类型(长度) [comment 描述] [约束]
> 修改数据类型 alter table 表名 modify 字段名 新数据类型(长度)
> 修改字段名和字段类型: alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 描述] [约束];
> 删除字段:alter table 表名 drop 字段名;
> 修改表名:alter table 表名 rename to 新表名;
> 删除表:drop table [if exists] 表名;
> 删除指定表并重新创建: truncate table 表名;
** 图形化工具:
> sqlyog
> navicat
> DataGrid
02. DML
>添加指定字段的数据: Insert into 表名(字段1, 字段2....) values (值1, 值2....)
> 添加的有字段的数据 insert into 表名 values (值1,值2....)
> 批量添加数据
insert into 表名(字段1,字段2...) values (值1,值2...) ,(值1,值2...),(值1,值2...)...
insert into 表名 values (值1,值2...) ,(值1,值2...),(值1,值2...)...
** 插入字符串和日期类型的数据时,数据要包含在引号中;
> 修改数据 update 表名 set 字段名1=值1, 字段名2=值2,.... [where 条件]
> 删除数据 delete from 表名 [where 条件]
03.DQL
> where 和 having 的区别
> 执行时机不同: where 是分组前过滤,不满足where条件的,不参与分组;
having 是分组之后的结果进行过滤;
> 判断条件不同: where不能对聚合函数进行判断;having可以;
> 分页查询: select 字段列表 from 表名 limit 起始索引, 查询记录数
>起始索引: 从0开始,起始索引=(查询页码-1)*每页记录条数
> 分页查询是数据库的方言,不同的数据库有不同的实现;mysql中是 limit
> 如果查询的是第1页数据,起始索引可以省略,直接简写为 limit 每页记录数;
> 关于取字段内值的长度的问题 (注意 length, char_length 的区别)
04.DCL
> 查询用户:
use mysql;
select * from user;
> 创建用户 (此时无任何权限)
create user '用户名'@'主机名' identified by '密码'
>> 若只限定在本机访问,则主机名为: localhost
>> 若创建的账号可在任意主机访问数据库,则 主机名为:%
> 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码'
> 删除用户
drop user '用户名'@'主机名'
> 可控制的权限
>查询权限: show grants for '用户名'@'主机名'
> 授予权限:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'
> 撤销权限: revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名'
数据库名.* 表示数据库中所有的表