MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
快速入门 下载MySQL MySQL官网
创建与删除数据库 1 2 3 CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码; DROP DATABASE 数据库名;
查看数据库:
查看数据库编码 1 2 3 4 5 select schema_name,default_character_set_name frominformation_schema.schemata whereschema_name = 'test' ;
选择数据库
字符类型
MySQL数据类型
含义
char(n)
固定长度,昀多255个字符
tinytext
可变长度,昀多255个字符
varchar(n)
可变长度,昀多65535个字符
text
可变长度,昀多65535个字符
mediumtext
可变长度,昀多2的24次方-1个字符
longtext
可变长度,昀多2的32次方-1个字符
char和varchar:
1.char长度固定,即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。 2.varchar可变长度,可以设置昀大长度;适合用在长度可变的属性。 3.text不设置长度,当不知道属性的昀大长度时,适合用text。 按照查询速度:char昀快,varchar次之,text昀慢。
字符串型使用建议:
1.经常变化的字段用varchar 2.知道固定长度的用char 3.尽量用varchar 4.超过255字符的只能用varchar或者text 5.能用varchar的地方不用text
创建表、删除表、修改表名与查看已创建的表 1 2 3 4 5 6 7 8 9 10 11 create table employees(employee_id int ,employee_name varchar (10 ),salaryfloat (8 ,2 ));show tables; alter table employees rename emp; drop table employees;
修改列名、类型、删除列和增加列 1 2 3 4 5 6 7 8 9 10 11 12 alter table emp change column employee_name name varchar (20 );alter table emp modify name varchar (40 );alter table emp add column commission_pct float (4 ,2 );alter table emp drop column commission_pct;
MySQL中的约束 约束概述 数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。
1.主键约束(Primary Key) PK 主键约束是使用昀频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。 2.外键约束(Foreign Key) FK 外键约束经常和主键约束一起使用,用来确保数据的一致性。 3.唯一性约束(Unique) 唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。 4.非空约束(Not Null) 非空约束用来约束表中的字段不能为空。 5.检查约束(Check) 检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前MySQL数据库不支持检查约束。
添加主键约束(Primary Key)
1.单一主键 使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。 2.联合主键 使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
修改表添加主键约束 1 2 3 alter table emp add primary key (employee_id);
主键自增长 MySQL中的自动增长类型要求:
1.一个表中只能有一个列为自动增长。 2.自动增长的列的类型必须是整数类型。 3.自动增长只能添加到具备主键约束与唯一性约束的列上。 4.删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后在删除约束。
删除主键 1 2 3 4 alter table emp modify employee_id int alter table emp drop primary key ;
添加外键约束(Foreign Key) 修改表添加外键约束 1 2 3 4 5 6 7 8 9 10 11 12 13 14 alter table departments add primary key (department_id);alter table departments modifydepartment_id int auto_increment; alter table emp add columndept_idint;alter table emp add constraint emp_fkforeign key (dept_id) references departments(department_id);
删除外键约束 1 2 alter table emp drop foreign key emp_fk;
添加唯一性约束(Unique) 修改表添加唯一性约束 1 2 3 alter table emp add constraint emp_ukunique (name);
删除唯一性约束 1 2 alter table emp drop keyemp_uk;
添加非空约束(Not Null) 修改表添加非空约束 1 2 alter table emp modify salary float (8 ,2 ) not Null ;
删除非空约束 1 2 3 alter table emp modify salary float (8 ,2 ) Null ;
创建表时添加约束 1 2 3 4 5 6 7 8 SHOW KEYS FROM 表名;create table depts(department_id int primary key auto_increment,department_namevarchar (30 ) unique ,location_id int not null );
MySQL中DML操作 添加数据(INSERT) 1 2 3 4 5 6 7 8 insert into departments(department_name,location_id) values ("market",1 );insert into departmentsvalues (0 ,"teaching",4 );
默认值处理(DEFAULT)
在MySQL中可以使用DEFAULT为列设定一个默认值。如果在插入数据时并未指定该列的值,那么MySQL会将默认值添加到该列中。
创建表时指定列的默认值 1 2 3 4 5 6 CREATE TABLE 表名(列名类型default 默认值,......);create table emp3(emp_id int primary key auto_increment,name varchar (10 ),address varchar (50 ) default 'Unknown' );
修改表添加新列并指定默认值 1 2 3 4 5 ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 默认值;alter table emp3 add column job_idintdefault 0 ;
插入数据时的默认值处理
如果在插入数据时并未指定该列的值,那么MySQL会将默认值添加到该列中。如果是完全项插入需要使用default来占位。
1 2 3 4 insert into emp3(name) values ("admin");insert into emp3values (default ,"oldlu",default ,default );
更新数据(UPDATE)
注意:更新语句中一定要给定更新条件,否则表中的所有数据都会被更新。
1 2 3 4 5 6 UPDATE 表名 SET 列名= 值,列名= 值 WHERE 条件;update emp3 set address = "BeiJing" where emp_id = 1 ;
删除数据(DELETE) DELETE删除数据
注意:在DELETE语句中,如果没有给定删除条件则会删除表中的所有数据。
1 2 3 4 DELETE FROM 表名 WHERE 条件;delete from emp3 where emp_id = 1 ;
TRUNCATE清空表 1 2 3 4 TRUNCATE TABLE 表名;truncate table emp3;
清空表时DELETE与TRUNCATE区别
1.truncate是整体删除(速度较快),delete是逐条删除(速度较慢); 2.truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因; 3.truncate是会重置自增值,相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的值。而delete删除以后,自增值仍然会继续累加。
MySQL查询数据 SELECT基本查询 SELECT语句的功能
SELECT语句从数据库中返回信息。使用一个SELECT语句,可以做下面的事: 1.列选择:能够使用SELECT语句的列选择功能选择表中的列,这些列是想要用查询返回的。当查询时,能够返回列中的数据。 2.行选择:能够使用SELECT语句的行选择功能选择表中的行,这些行是想要用查询返回的。能够使用不同的标准限制看见的行。 3.连接:能够使用SELECT语句的连接功能来集合数据,这些数据被存储在不同的表中,在它们之间可以创建连接,查询出我们所关心的数据。
SELECT基本语法 1 2 SELECT * | {[DISTINCT ] column | expression [alias], ... }FROM table ;
基本SELECT语句
在昀简单的形式中,SELECT语句必须包含下面的内容: 1.一个SELECT子句,指定被显示的列 2.一个FROM子句,指定表,该表包含SELECT子句中的字段列表
在语法中:
语句
含义
SELECT
是一个或多个字段的列表
*
选择所有的列
DISTINCT
禁止重复
column
expression
alias
给所选择的列不同的标题
FROM table
指定包含列的表
查询中的列选择 选择所有列
用跟在SELECT关键字后面的星号(*),你能够显示表中数据的所有列。
1 2 3 4 SELECT * FROM departments;select * from departments;
选择指定列
能够用SELECT语句来显示表的指定列,指定列名之间用逗号分隔。
1 2 3 4 5 6 7 SELECT * FROM departments;select department_id, location_id from departments;select department_name from departments;