一般,DQL(数据库查询语言)非标准的,因为数据库主要用来查询数据,所以把它单独看做一个分类
这里建议将路径配到环境变量path那里去
mysql -uroot -pcreate database 库名称 [character set 码表名称 collate 字符校对集名称]
create database student;-- 创建数据库 create database student character set utf8;-- 创建数据库student,制定码表为utf8(旧版写为utf-8,新版为utf8)PS:只可以修改数据库的码表,不可以修改数据库的名称
alter database 数据库名称 character set 数据库码表 [collate 校对集名称];
alter database student charset utf8 collate utf8_bin;-- 修改数据库的码表以及校对集可以看到除了自己创建的库之外,还有一些其他库。其他库(除了test)不要乱动。因为是保存mysql的配置信息,账户信息等等。 test库 : 自动创建用于测试的。
use student;– 制定使用数据库student
创建库 create database 库名 [character set 码表 collate 字符校对集] 显示所有库 show databases; 删除库 drop database 库名; 修改数据库码表 alter database 库名 character set 码表 collate 字符校对集 使用数据库 use 库名 查看当前使用的库 select database(); 显示创建库语句 show create database 库名;
CREATE TABLE table_name ( field1 datatype 约束/主键约束 auto_increment, field2 datatype 约束, field3 datatype 约束 )[character set 字符集 collate 校对规则]
create table student (name varchar(10),sex enum('男','女'),money int) charset utf8;-- 创建表studentalter table 表名 add 列名 类型;
alter table student add phone varchar(10);-- 表新增一列drop table 表名;
drop table student;-- 删除数据库alter table 表名 drop 列名;
alter table student drop money;--删除列alter table 表名 modify 列名 类型;
alter table student modify phone varchar(11);-- 修改列属性alter table 表名 change 旧列名 新列名 数据类型;
alter table student change sex gender enum('男','女');-- 修改列的名称,类型一定需要写出来rename table 旧表名 to 新名;
rename table student to teacher;--修改表名为teacher(如果创建表时不指定,默认使用数据库的字符集)
alter table 表名 character set 字符集 collate 校对集;
alter table student charset utf8 collate utf8_bin;--极少使用,创表时候一般会制定,制定后极少修改insert into 表名[(列名1,列名2…)] values (值1,值2…);
_匹配一个字符, %匹配0~n个字符
select * from student where name like '%a%';--查询名字有a的同学信息null与任何数字计算结果都是null.上面的写法是错误的. 使用IFNULL(参数1,参数2) 函数解决. 判断参数1的值是否为null,如果为null返回参数2的值.
select sal*12 + IFNULL(comm,0) from emp;--如果comm为null,那么就将值设置为0asc: 升序(默认) desc:降序
select * from stu order by age asc;--升序排序查询1.非空约束(not null) 指定非空约束的列, 在插入记录时 必须包含值. 2.唯一约束(unique) 该列的内容在表中. 值是唯一的. 3.主键约束(primary key) 当想要把某一列的值,作为该列的唯一标示符时,可以指定主键约束(包含 非空约束和唯一约束). 一个表中只能指定一个主键约束列.主键约 束 , 可以理解为 非空+唯一. 注意: 并且一张表中只能有一个主键约束.
DOUBLE 和 DECIMAL 区别? DOUBLE类型在运算时会有精度的缺失。 DECIMAL 就是解决精度缺失问题的。(底层使用字符串来保存数字)
单纯想表示小数属性时,使用double。 需要频繁参与运算的小数,使用decimal。
注意: 字符串类型要使用单引号包裹.
CHAR/VARCHAR (最大长度255字节) ====================================================
问题:char和varchar有什么区别? char定长字符串.varchar表示变长字符串. 同时指定长度为10。当存储 abc char =》 ‘abc ’ varchar => ‘abc’ 结论: 开发中varchar用的最多。 char只在表示固定长度的枚举中使用。例如 :性别(用01,02表示) ====================================================
*TEXT/CLOB 保存文本(字符流) –> 当要保存的内容超过255字节时使用. java中的writer 字符 BLOB 保存字节(字节流) –> 开发中用不到 java中的stream 字节 Character Large Object binary Large Object
区别: text:只能存储字符数据. BLOB:可以存储字符和多媒体信息(图片 声音 图像)
问题: datatime 和 timestamp 区别? 这两种类型记录的数据是一模一样. 区别在于插入的时候,如果插入datatime类型时,没有 传值,那么该类型默认值就是null; 如果插入timestamp类型时,没有 传值,那么该类型默认值就是当前时间;