SQL常用的一些语句和命令
sql常用命令
查看mysql数据库中的所有数据库:show databases; 切换、选择、使用数据库:use + database_name; 查看数据库下的表结构:desc + table_name; 创建数据库:create database + database_name 删除数据库:drop database database_name; drop database if exists database_name; 创建表格:create table + table_name( column + datatype + auto_increment 自增 not null 不为空 unique 该列中元素唯一,不重复 check 列中元素的约束条件,check(id>0) default 给列中元素设置默认值 ); 删除表:drop table + tabel_name 示例: column1 integer not null, column2 char(11) default=2 column3 varchar(20) not null default 'haha' column4 bit default 1 column5 datetime not null column6 tinyint not null column7 longlob column8 float # 定义主键 column9 integer primary key auto_increment column_name integer auto_increment primary key(column_name) # 定义外键 column1 int foreign key references other_table(id)
alter(修改)、select(查询)、update(修改)、delete(删除)、insert into(添加)
alter 修改的是表格的列,可以添加删除列,以及改变列的属性; select 查询的是表格的内容 update 修改的是表格的元素 delete 删除的是表格的行 insert into 给表格添加行元素
alter 的用法
alter table table_name add/drop/modify
添加:
1.添加约束 alter table table_name add check(id>0 and age=18 ) 2.指定添加主键 alter table tabel_name add primary key (column_name) 3.添加外键 alter table tabel_name add foreign key () references othertable() alter table table_name1 add foreignkey(f_key) reference table_name2(p_key) on delete cascade on update cascade on delete set null on update cascade
删除:
1.撤销约束: alter table table_name drop constraint column_name alter table table_name drop check column_name 2.删除默认值 alter table table_name drop column_name default 3.删除表中的列 alter table table_name drop column column_name 4.撤销主键 alter table table_name drop primary key alter table table_name drop constraint column_name 5.撤销外键 alter table tabel_name drop foreign key column1 alter table table_name drop constraint column1
修改:
1.修改默认值 alter table table_name modify column_name default 'thanks' 2.修改表格中列的数据类型 alter tabel tabel_name modify column column_name datatype
select用法
select * from table + 条件
where条件:
column1 = value 可以使用比较运算符 where column1 = value and or where 条件1 and (条件2 or 条件3) like like中可以使用通配符: 选取name以字母'K'结尾的所有客户:where name like '%k' 选取name包含模式'oo'的所有客户:where name like '%oo%'; 选取name不包含模式'oo'的所有客户:where name not like '%oo%' 选取name 以任意字符开始,然后是'oogle'的所有客户: where name like '_oogle' 选取name以G开始,然后是一个任意字符,然后是o,然后是一个任意 字符,然后是le的所有网站:where name like 'G_o_le'; # '_': 代表任意一个字符 # '%' 表示一个或者多个字符 # 还可以使用正则表达式,详情请访问[菜鸟教程](http://www.runoob.com/sql/sql-tutorial.html) 选取 name 以 A 到 H 字母开头的网站:WHERE name REGEXP '^[A-H]'; 选取 name 不以 A 到 H 字母开头的网站:WHERE name REGEXP '^[^A-H]'; in 操作符允许在 WHERE 子句中规定多个值: where column_name in (value1,vlaue2,...) between 操作符用于选取介于两个值之间的数据范围内的值,这些值可 以是文本、数值、或者日期: where alexa not between 1 and 20 where (alexa between 1 and 20) and not country in ('USA', 'IND') where name between 'A' and 'H'; where date between '2016-05-10' and '2016-05-14';
关键字:
order by: 把选出的结果按照某种方式进行排序,默认为升序 反序 可以在最后面加上desc order by column_name desc group by: 对选出的结果按照某种方式进行分组 limit: 限制选出的行数 限制选出记录的条数: select * from table_name limit number; 选取前面百分之五十的记录: select top 50 percent * from table_name;
SQL别名:创建别名是为了让列名称的可读性更强
select column_name as alias_name from table_name; 把三个列(url、alexa和 country)结合在一起,并创建一个名 为 "site_info" 的别名: select name, CONCAT(url, alexa, country) AS site_info from Websites; select w.name, w.url, a.count, a.date from Websites as w, access_log as a where a.site_id=w.id and w.name="xxx";
join:用于把来自两个或者多个表的行结合起来,基于这些表之间的
共同字段inner join或join 取表格的并集 select Websites.id, Websites.name, access_log.count, access_log.date from Websites inner join access_log on Websites.id=access_log.site_id; LEFT JOIN:LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。 RIGHT JOIN:RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。 FULL JOIN:并集 select column_name from table1 inner join table2 on table1.column_name=table2.column_name; 或者: select column_name from table1 join table2 on table1.column_name=table2.column_name; select into: 从一个表复制数据,然后把数据插入到另一个新表中 复制所有的列插入到新表中: select * into newtable from table; 复制指定的列插入到新表中: select column_name into newtable from table; INSERT INTO SELECT: 从一个表中复制所有的列插入到另一个已存在的表中: INSERT INTO table2 SELECT * FROM table1; 复制希望的列插入到另一个已存在的表中: INSERT INTO table2(column_name) SELECT column_name FROM table1;