查询当前用户登录
mysql> select user(); |
mysql> select database(); |
查看库
mysql> show databases; |
选择一个库
mysql> Use mysql; |
查看当前所在库中的表
mysql> show tables; |
创建一个库
create database dataname( ......); |
创建一个表
create table 数据库.表名(<字段名 字段类型>[(宽度) 约束条件,]; |
insert into tabnamevalues('jom',20);//新建一条记录,按顺序写。也可以这样写insert into TABNAME(字段名1,字段名2,字段名3....)values(字段1值,字段2值,字段3值);not noll //条件,不允许为空 |
select * from yg_data; |
mysql> create table yg_data( //创建一个表 -> name char(3) not null, //定义类型及宽度,不允许空值 -> gender enum("boy","gril"), //定义枚举,单选 -> age tinyint(2) unsigned, //定义类型及显示宽度 -> entrytime year, -> position enum("staff","foreman","manager" ) default "staff" , -> work char(4), -> department enum("personnel","finance","plan") not null -> ); |
create table 新表名 select * from mysql.user;//复制表时,如果源表的Key字段有标识时,则新表不会有key属性,就是说不会被复制过去的。 |
select 字段名 from 表名; |
Alter table 源表名 rename to 新表名; |
表管理
Alter table 数据库.表名 [ 处理动作 ]; |
//处理动作:
添加新字段 add [ add 字段名 字段类型(宽度) 约束条件 first; ] [ add 字段名 字段类型(宽度) 约束条件 after; ] //默认新添加的字段追加在已有字段末尾 First 把新添加的字段添加所有字段的上方 After 字段名 把新字段添加在指定字段名的下方 |
删除字段: drop
Drop 字段名;Drop 字段名, drop字段名; |
[ mydify 字段名1 新字段类型(宽度) 约束条件; ] [ mydify 字段名2 新字段类型(宽度) 约束条件; ] [ mydify 字段名3 新字段类型(宽度) 约束条件; ] |
[ Change 源字段名1 新字段名1 字段类型 约束条件, ][ Change 源字段名2 新字段名2 字段类型 约束条件, ][ Change 源字段名3 新字段名3 字段类型 约束条件; ] |
[ alter table 表 modify 字段名 tinyint(2) unasigned;]//改类型时将不改变的类型原样写下来。 |
[ select host,user,passwd from mysql.user; ]//查询host user passwd这三个类型,其它的不看。 |
[ Select * from 表名 where 字段=”所有值”; ]//没有所指纪录,则只剩下空表,及表结构。 [ create table newtablename SQL没有查询结果的语句; ]//查询到的没有结果,那么只会有表结构,复制即可。 |
[ desc tablename; ]怎么查看索引信息 [ show idex from dataname.tablename ] |
Create table 表名(Name varchar(10),Age int(2),Sex enum(“doy”,”gril”) default(“boy”Index (name)//如果要两个索引字段,则再在此处加上即可。也可以”index(name,ID)”); |
Create index 索引名 on 表名(字段名列表);//索引名一般为字段名。 表名,字段列表则要把那个字段做为INDEX字段。MUL = index查看索引名// show index from 表名;...KEY name... |
Drop index 索引名 on 表名//不是主键,不能设置auto_increment功能。要想删除主键功能,则先删除auto_increment。Primarykey字段标志位为PRI |
[ Delete from 表名 where 字段 is null; ] |
[ alter table t30 add primary key(stud_id); ] //想让多个字段做主键字段,叫复合主键,只能在建表时一起指定就好。 |
[ Alter table t50 modify id int(2) not null auto_increment; ]//即使用字段被删除了,还会接着之前的编号。[ Alter table t40 drop primary key; ]//删除主键功能,(没有自动增长功能)[ Alter table t50 modify id int(2) not null; ][ Alter table t50 drop primary key; ]//先取消自动增长,再删除主键功能 |
mysql> create table sername( -> ip varchar(15), -> port varchar(5), -> sername varchar(10), -> status enum("deny","allow") default "deny", -> primary key(ip,port) -> );//两个主键的内容不完全一样,就可以写进记录。 |
mysql> delete from tabname; |
create table stud.gz_tab(id int(2) primary key auto_increment,gz_id int(2) not null,gz float(7,2),foreign key (gz_id) references yg_tab(yg_id) on update cascade on delete cascade)//创建外键为(gz_id)参考yg_tab这个表中的yg_id字段,同步更新,同步删除。engine=innodb;//只有innodb才能做外键。 |
show engines; |
show variables like "table_type"; |
cerate table 表名(字段例表) engine=存储引擎名; |
show create table 库名.表名;//如果不指定则使用默认的存储引擎。 |
alter table 库名.表名 engine=存储引擎名; |
vim /etc/my.conf[mysqld]default-storage-engine=innodb...//指定默认使用的存储引擎[mysqld_safe]log-error=/var/log/mysqld.log//指定错误日志存放位置pid-file=/var/run/mysqld/mysqld.pid//保存pid进程号 |
show create table 库名.表名;update gz_tab set gz_id=88 ;//更新子表gz_tab的gz_id值为88,因为只有一条记录,则不须要加条件,如果有多个则加条件如下:update gz_tab set gz_id=88 where 字段=值;开启/关闭自动提交mysql> set autocommit=0;//autocommit=1 表示开启。myisam //default使用的存储引擎insert into studb.gz_tab(gz_id,gz)values(1,0000.99);//添加记录的方法 |
导入数据命令格式
load data infile “要导入的文件绝对路径” into table “要导入的表名”fileds terminated by ":" //每一个字段的分割符lines terminat by "\n"; //每行的分割符 |
导出数据的格式
SQL 查询语句 into outfile "文件名"fields terminated by "字段间隔符"lines terminated by "\n";删除表中的某一个类型mysql> delete from tablename where 类型名; |
查看表的记录
select 字段名列表 from 表名;select 字段名列表 from 表名 where 条件表达式; |
匹配规则
等于:mysql> delete from userlist01 where id=1;不等于:mysql> delete from userlist01 where id!=1;可用符号:mysql> delete from userlist01 where id=1;mysql> delete from userlist01 where id!=1;mysql> delete from userlist01 where id>1;mysql> delete from userlist01 where id>=1;mysql> delete from userlist01 where id<1;mysql> delete from userlist01 where id<=1;between.....and //指定范围mysql> select username,useruid,homedir from userlist where useruid between 30 and 40;//只显示useruid值在30~40之间且username,useruid字段的记录, |
mysql> select * from userlist where username in ("root","bin","admin");//只显示username的值为"root、bin、admin"的记录mysql> select * from userlist where username not in ("root","bin","admin");//同上相反is null //值为空mysql> select * from userlist where shell is null;//显示shell值为空的记录。mysql> select * from userlist where shell is not null;//同上相反。mysql> select distinct shell from userlist;//不显示userlist值重复的记录 |
逻辑匹配(多个条件时,使用逻辑匹配)
逻辑与(多个条件要同时成立时,使用逻辑与)
mysql> select * from userlist where username="root" and useruid=0;//匹配username值等于root及useruid值等于0时将其显示出来。mysql> select * from userlist where username="root" or useruid=1;//只要匹配username的值等于root、useruid等于1其中任意一条,则显示出来。mysql> select * from userlist where username="root" or useruid=10 or shell="/bin/bash";//同上,只不过多了个匹配条件as //给计算后的值起一个字段名用来本次的显示 |
正则表达式. //表示一个匹配字符* //匹配任意字符 ^ //以什么开关的字符$ //以什么结尾的字段[] 匹配范围内//正则表达之前要加上regexp
mysql> select username,2014-useruid as age from userlist; //显示出username的值及2014减去useruid的值并以age为此计算结果的字段名。mysql> select username,(useruid+usergid) as ugid from userlist;//显示出username的值及useruid加上usergid的值并以ugid为此计算结果的字段名。mysql> select username,(useruid*usergid) as ugid from userlist;//同上,只是算法不同,这里是乘法mysql> select username,(useruid/usergid) as ugid from userlist;//同上,只是算法不同,这里是除法。 |
模糊查询% 匹配0个到N个字符_ 匹配一个字符
mysql> select * from userlist where username like "a%";//显示username字段的值以a开头的值。//模糊查询之前要加上likemysql> select * from userlist where username like "roo_";mysql> select * from userlist where useruid="1_";mysql> select username from userlist where username like "_o__"; |
更新表记录
update TABLENAME set 字段名=新值, 字段名=值 [where条件表达式] mysql> update userlist set username="root1" where username="root"//匹配条件username="root"的记录值更新为"root1"//如要批量修改则不须加条件。//数值类型不用加“” |
函数avg() 平均值//()表示要统计的字段名sum() 求和min() 最小值max() 最大值count() 统计记录的条目数
mysql> select sum(useruid) as uid from userlist; //空,是不统计的。//且,有值优先! |
count(*)
mysql> select count(*) as gril from yangongdb where gender="gril"; |
分组和排序order by [asc/desc] [升序(从小到大)/降序(从大到小)] 排序
//mysql> select username,useruid from userlist order by useruid asc;//mysql> select username,useruid from userlist order by useruid desc; |
group by 分组
mysql> select shell from userlist group by shell; //下面两个一样的效果。 mysql> select useruid,shell from userlist where useruid<=10 group by shell ; mysql> select useruid,shell from userlist group by shell having useruid<=10; |
limit N /N,M //指定显示记录条目数 默认是从第一条开始显示。N 表示从第几条记录开始显示,默认从第1条开始显示,如果从第一条记录开始显示N的值可以省略M 表示显示几条记录limit 0,5 从第一条记录开始显示,显示5条。limit 5,5 从第5条记录开始显示,显示5条。
mysql> select username,useruid from userlist order by useruid desc limit 5; //显示5行,默认是从1开始 mysql> select username,useruid from userlist order by useruid desc limit 10,5; //显示5行,从第10行开始mysql> select id,username,useruid from userlist order by id limit 10,1; //显示1行,从第10行开始 |