三、常用的sql语句
1)mysql 初始数据库
information_schema //虚拟库,存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
information_schema 虚拟库 不占用物理存储空间 数据存储在物理内存里,存储已有库和表的信息
mysql //mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息,不可以删除。
performance_schema //内存型数据库,使用performance_schema存储引擎,通过事件机制将mysql服务的运行时状态采集并存储本库
sys //这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据
test //测试数据库,所有用户均对他有完全权限
2)把数据存储在数据库服务器上的过程?
连接数据库服务器(命令行 API 图形工具) 选择库 (存放数据的文件夹) 选择表 (文件) 插入记录(文件中的行) 断开连接
2.1 sql命令使用规则?
操作指令不区分大小写(密码、变量值除外) 每条SQL指令以 ; 结束
不支持 Tab 键自动补齐 \c 可废弃当前编写错的操作指令,但前面不能有 ;
2.2 sql命令分类?
DDL 数据定义语言(create alter drop) DML 数据操作语言(insert update delete)
DCL 数据控制语言(grant revoke) DTL 数据事物语言(commit rollback savepoint )
2.3管理数据库的sql命令
Show databases; //显示已有的库
Use 库名; //切换库
Select database(); //显示当前所在的库
Create database 库名; //创建新库
Show tables; //显示已有的表
Drop database 库名; //删除库
2.4 数据库的命名规则
可以使用数字/字母/下划线,但不能纯数字 区分大小写,具有唯一性 不可使用指令关键字、特殊字符
3)管理表的 sql命令
create table gamedb.stuinfo( name char(10),addr char(20) ); //创建表
drop table 库名.表名 ; //删除表
select * from 库名.表名; //查看表记录
desc 库名.表名 ; //查看表结构
2.8 管理记录的sql命令
insert into 库名.表名 values(字段值列表); //插入
insert into gamedb.stuinfo values ("tom","beijing");
update 库名.表名 set 字段名=值 where 条件; //修改表记录
update gamedb.stuinfo set addr="shanghai" where name="tom";
delete from 库名.表名; //删除表记录,表还在
delete from gamedb.stuinfo;
整数类型 (只能存储整数)
使用unsigned(无符号)修饰时,对应的字段只保存正数 数值不够指定宽度时,在左边填空格补位
宽度仅是显示宽度,存数值的大小由类型决定 使用关键字zerofill时,填0代替空格补位 数值超出范围时,报错。
浮点型(可以存储小数)
定义格式:float(总宽度, 小数位数) 1位符号,8位指数,23位小数。
当字段值与类型不匹配时,字段值作为0处理 数值超出范围时,仅保存最大/最小值
字符类型
定长:char(字符数)
最大长度255字符 不够指定字符数时在右边用空格补齐 字符数断超出时,无法写入数据。
变长:varchar(字符数)
按数据实际大小分配存储空间 字符数断超出时,无法写入数据。 最大65532字符
大文本类型:text/blob
字符数大于65535存储时使用
日期时间类型
日期时间DATETIME 8字节 范围:1000-01-01 00:00:00.000000~ 9999-12-31 23:59:59.999999 不赋值为空
日期时间TIMESTAMP 4字节 范围:1970-01-01 00:00:00.000000~ 2038-01-19 03:14:07.999999 不赋值,自动获取当前时间
日期,DATE 4字节 范围:0001-01-01 ~ 9999-12-31 YYYYMMDD 20180614
年份,YEAR 1字节 范围:1901~2155 默认4位数表示 当只用2位数字赋值时,01~69为2000~2069,70~99为1970~1999
时间,TIME 3字节 格式:HH:MM:SS HHMMSS 174258
时间函数:
now() 获取系统当前日期和时间,可以与其他日期函数合用,用于指定当前时间
curdate() 获取当前的系统日期 curtime() 获取当前的系统时刻
sleep(N) 休眠N秒 day()获取指定时间中的日
year() 执行时动态获得系统日期时间 month() 获取指定时间中的月份
date() 获取指定时间中的日期 time() 获取指定时间中的时刻
枚举类型
enum(值1,值2,值N) 单选
set(值1,值2,值N) 多选
数值类型、字符类型宽度的区别:
数值类型宽度 赋值受参数影响,可以超过宽度限制,设置宽度节约空间,zerofill 不够宽度前面补0,与数值类型连用
字符类型宽度 赋值不能超过宽度限制