MySQL功能自定义选择安装
功能自定义选择
路径自定义选择
设置root用户密码
安装完成,点击MySQL Workbench 6.3 CE进入MySQL客户端
二、SQL基础
SQL语句分类
1.DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create/drop/alter
2.DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括 insert/delete/update/select等
3.DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括grant/revoke等
DDL语句(涉及表的定义、结构的修改)
一、create语句
Query Ok代表语句执行成功
1 row affected代表数据库一行收到影响
0.01 sec代表操作执行的时间
create table student(SID int not null auto_increment,sNo int ,sName varchar(50) not null,primary key(SID));1.查看系统中都存在哪些数据库(show databases;)
1.查看表定义:desc tablename
2.查看创建表的SQL语句:show create table tablename
四、删除表
删除表的语法:drop table tablename;
五、修改表
aleter 语法 | 说明
---|---alter table tablename modify columnname newColumnType | 修改表字段的类型(==modify 不能更改字段名称==)alter table tablename add newColumnname newColumnType| 增加表字段alter table tablename drop oldCloumnname|删除表字段alter table tablename change oldColumname newColumnname newColumntype|修改字段的名称及类型alter table tablename rename (to) newtablename|修改表名称修改字段的排列顺序
alter table user add address varchar(20) first ;alter table user add age int after name ;DML(对数据库表记录进行操作,增(insert)删(delete)改(update)查(select))
-3.delete语句
语法:delete from tablename where condition
-4.select语句
语法:select * from tablename [where condition]
5.表连接
1.内连接(仅选出两张表中互相匹配的数据)
select cno,cname,sname from student inner join course on cno=sno;select cno,cname,sname from student,course where cno=sno;2.外连接
select * from t1 union all select * from t2;select * from t1 union select * from t2;union all与union的区别:
create table valuetype(age int,age1 int)insert into valuetype(age,age1)values(1,2);//这时候数据库就显示1alter table valuetype modify age int zerofill;//这时候数据库就显示"0000000001"数据插入bit类型字段时,首先转换为二进制,如果位数允许,将插入成功,如果位数小于实际的位置,则插入失败。
create table timestamptest(tp timestamp)系统会自动给tp赋予默认值current_timestamp(系统日期),但是mysql只给第一个timestamp设置默认值,如果有第二个timestamp类型,则默认值设置为0
create table indexTest(id int not null auto_increment,memberid int not null,createtime datetime not null default current_timestamp,primary key (id))alter table indextest add orderserial varchar(50) not null;create unique index IX_orderserial on indexTest(orderserial);insert into indextest (memberid,createtime,orderserial)values(112123,"2016-08-14","sz121213")
create or replace view index_view asselect * from indextest1.创建create [or replace] view viewName as select ...
create database finance;//创建finance数据库use finance;create table orders(orderId bigint not null auto_increment,memberId int not null default 0,serialNumber varchar(50) not null default "",amount decimal(18,2) not null default 0,createTime datetime not null default current_timestamp,primary key (orderid))//创建orders订单表insert into orders (memberId,serialNumber,amount) values(6561121,"sz12234222",5),(233444,"ys1652233",10)//插入测试数据delimiter &create procedure orders_serial(in serial varchar(50))reads sql databeginselect * from orderswhere serialNumber=serial;end &注释:delimiter $$命令就是将语句的结束符从分号;修改成其他符号,这里指的是$$为结尾。这样在number后面的分号就不会认为结束。
call orders_serial("sz12234222")2.存储过程的好处
drop procedure if exists orders_serial//if exists可选4.查看存储过程差状态
show procedure status like "orders_serial"5.查询存储过程的定义
show create procedure orders_serial二、存储过程变量的使用
set currentTime=now();//直接赋值select XX into currentTime from XX;//也可以通过sql语句进行赋值3.定义条件和处理
declare handler_type handler for contidtion_value;handler_type:
create event xon scheduleevery 5 seconddoinsert into orders (memberId,serialNumber,amount) values(6561121,"222",5)
set global event_scheduler =1//打开调度器alter event x disable;//禁用事件调度器drop event x;//删除事件调度器十、 触发器
drop trigger orderlogdelimiter $create trigger orderlog after insert on orders for each rowbegininsert into orderslog (content) values(new.serialNumber);end insert into orders (memberId,serialNumber,amount) values(6561121,"sz12234222",5)解释:上面描述的是创建一个触发器,当往订单表中插入数据之后,在订单日志表插入一条记录。使用old和new来引用触发器发生变化的记录内容,目前只支出行级触发,不支持语句级触发
before insertefore updateafter update十一、 事务控制和锁定语句