单远涛

程序员的日常

SQL - 语句

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;
    
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

sql语句

2011年05月11日 2KB 下载

SQL 经典语句

2011年09月28日 48KB 下载

基础SQL语句

2011年10月23日 2KB 下载

SQL基本语句SQL基本语句

2008年10月28日 17KB 下载

SQL语句大全

2011年10月14日 293KB 下载

SQL 语句大全 SQL 语句

2008年09月01日 87KB 下载

没有更多推荐了,返回首页

不良信息举报

SQL - 语句

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭