进入数据库:mysql -u root -p
输入密码:
show databases;
显示数据库(前三个是mysql的系统库,自带一个测试数据库)
use 数据库名
比如:use test
使用test数据库,显示:database changed
show tables; 显示数据库内部的表
数据定义语言(DDL):Data Defintion Language 如 CREATE, DROP, ALTER
创建数据库
CREATE DATABASE mydatabase;
删除数据库:
drop database 数据库名
例如:
drop database mydb;
创建表:
CREATE TABLE teacher(
sid int(11) primary key auto_increment, //字段名+字段类型+字段的属性,primary key 主键
name varchar(20), gender char(1),
age int(2), birth date
);
主键:用来唯一代表一条记录的字段(主键值必须是唯一),每个表必须有一个
auto_increment,自增
显示数据库内部的表:
show tables;
查看表结构:
desc teacher;
删除表:
drop table 表名;
会删除表的所有记录和结构。
修改表的结构(ALTER TABLE语句)
alter table test add column name varchar(10);//添加列表
alter table test rename test1;//修改表名
alter table test drop column name;//删除表列
alter table test modify address char(10);//修改表列类型
alter table change address address char(40);//修改表列类型
alter table test change column address address1 varchar(30); //修改表列名
数据操纵语言(DML):Data Manipulation Language,如 insert,update,delete
添加数据(insert into …语句)
insert into 表名(字段1, 字段2, 字段3)values(值,指,值);
查询语句:select *from teacher;查询teacher 表中的所有记录。
修改数据:(update ..set语句)
update 表名 set 字段名= ‘值’,字段名=‘值’,字段名 = ‘值’where 字段名 = ‘值’;
update teacher set gender = ‘m’ where id = 1;//修改id为1的gender属性
删除数据(delete from…语句)
…删除所有记录:
delete from 表名;
…删除id为1的记录:
delete from 表名 where id = 1;
数据查询语言(DRL)Data Retrieval Language: select 语句
查询所有信息:
select * from 表名: select * from teacher; // *通配符,查询所有。台会还原为为表结构查询,开发中最好少用,但是对于数据库会增加一步解析的操作。
在没有表被引用的情况下,允许指定DUAL(mysql内部的一个虚拟表)作为一个假的表名
select 1+1 from dual;
查询id为1的老师信息:select *from teacher where id = 1;
查询字段为空的老师信息:select *from teacher where job is null; //注意不是 job = null;不为空应该是is not null
模糊查询:
查询name最后一个字段为s的老师:
select * from teacher where name like ‘%s’
查询姓名与指定字母开头的老师:
select * from teacher where name like ‘y%’;
包含“%y%”
查询所有老师信息,按照日期降序排序:
select * from teacher order by createDate (asc, 为升序)
select * from teacher order by createDate desc; 为降序
多个排序条件:
当一个排序条件相同的时候,使用另外一个条件排序。
select * from teacher order by createDate, age desc;
按分组查询:
select gender, count(gender) from teacher group by gender;
count(), 求出所查询分组的总数,是一个函数。
select gender,count(gender) from teacher group by gender having gender= ‘m’; //找出gender里面值为”m”的总数。
select gender, count(gender) from teacher where gender = ‘m’; //比上一个效率高,应该避免使用having
查询表的总记录数:
select count() from teacher; //开发中应该避免用到通配符 。
select count(主键) from teacher; //主键的总数等于总记录数。
查询记录总数的前三条。
select * from teacher limit 0, 3; //数组下标从0开始
设置别名:
select t.name, t.age from teacher t;
事务控制语言(TCL) Transaction ControlLanguage
比如COMMIT, ROLLBACK等语句
事务时访问并可能更新数据库中各种数据项的一个可执行单元。
事务共有四个属性:原子性、一致性、隔离性、持续性
设置默认的提交方式:
set autocommit=false // 设置事务提交方式为手动提交
set autocommit=ture //手动提交
还原:rollback;
可以回滚表示数据库没有真正的保存进入文件,只是在文件中存在。还原表示在内存中存在。
再次输入commit,表示手动提交,提交过后表示不能rollback.
保存还原点:savapoint point2;
rollback to point2; 回滚到还原点point2。