MySQL语句的简单使用

基本sql语句的操作(增、删、改、查)

库操作:
    > show databases;                       #列出所有的库
    > create database db2;                 #创建库
    > show create database db2;         #查看所创建库的属性
    > use db1;                                  #切换库
    > drop database db2;                   #删除库

表操作:
    > show tables;                                              #列出当前库中所有的表
    > create table t1 (id int(10),name char(10));    #创建表,至少要有一个字段,多个字段用","隔开
    > desc t1;                                                    #查看表结构
    > show create table t10\G                              #查看表的创建属性
    > alter table t1 rename to t10;                       #修改表名
    > alter table t1 add sex char(10);                   #添加字段在末位
    > alter table t1 add QQ int after name;           #添加字段在指定字段的后面         在name字段后面创建一个新的字段
    > alter table t1 add uid int first;                      #添加字段在首位
    > alter table t1 drop uid;                               #删除字段
    > alter table t1 change id uid int;                  #修改字段的名称及属性           将id的字段名改为uid
    > alter table t1 modify uid int(10);                 #修改字段的属性
    > drop table t2;                                             #删除表
记录操作:
    > insert into t1 set uid=1,name='tom',sex='male';                                  #添加一条记录
    > insert into t1 (uid,name,sex) values (2,'jim','male');      
    > insert into t1 (uid,name,sex) values (3,'lilei','male'),('4','lily','female');     #添加多条记录
    > insert into t1 values (5,'lucy',123,'female');                                         #注意:列数和值数一定要一样
    > update t1 set name='hanmeimei' where uid=6;                                  #修改记录,注意定位
    > update t1 set uid=6 where name='lucy' and QQ is null;                       #多条件定位   and  ↔  &&       or  ↔  ||      not  ↔  !
    > delete from t1 where uid=6;                                                            #删除记录,注意定位             删除和更新不能用子查询

单表查询:
    > select  *  from  t1;                                                  #查询表中所有字段的所有记录.如果显示很乱,用\G结尾
    > select name,qq from t1;                                           #查询部分字段的所有记录
    > select name,chinese from t2 where chinese >= 80;    #查询部分字段的部分记录
    > select name,chinese,english from t2 where chinese >= 80 and english = 100;   #多条件定位
    > select * from t2 order by chinese;                     #以指定字段值升序排列
    > select * from t2 order by chinese desc;             #desc: 逆序
    > select * from t2 order by chinese desc limit 2;   #只显示前几条记录
    > select * from t2 where english=(select max(english) from t2);    #子查询
    > select * from t2 where name like 't%';                #like通配符   %: 所有    _: 任意单个字符
    > select * from t2 where name regexp '^t';            #regexp正则表达式
    > select name,chinese+math+english as total from t2;      #as设置别名
    > select count(name) from t2;                                        #统计name字段有多少记录, null不会被统计
    > select count(1) from t2;                                              #统计有多少条记录
    > select sex,count(sex) from t1 group by sex;                  #统计指定字段中相同的值的个数

多表联合查询:
   
内连接: 两个表某字段的值完全一样,显示两个表同时含有的一样内容
       > select t1.name,t1.sex,t2.math from t1 join t2 on t1.name=t2.name;
       > select t1.name,t1.sex,t2.math from t1,t2 where t1.name=t2.name;
       
    外连接: 左,右连接,左链接以左表为主,显示左表里面所有的内容;使用外链接时也可以使用where进行定位。
     左: 显示出左表中所有的记录
     右: 显示出右表中所有的记录
        > select t1.name,t1.sex,t2.math from t1 left join t2 on t1.name=t2.name;         #左连接           显示左表里有右表没有的内容
        > select t2.name,t1.sex,t2.math from t1 right join t2 on t1.name=t2.name;       #右连接            显示右表里面有左边没有的内容

char与varchar的区别
char定义的是固定长度,长度范围为0-255,存储时,如果字符数没有达到定义的位数,会在后面用空格补全存入数据库中,在上例中,name实际存储在数据中的数据为'zejin '
varchar是变长长度,长度范围为0-65535,存储时,如果字符没有达到定义的位数,也不会在后面补空格,在上例subject字段中,实际存储在数据中的数据为'zejin ',当然还有一或两个字节来描述该字节长度

一、drop,truncate,delete删除表的区别
    1、drop table 表名称                         eg: drop table  dbo.Sys_Test
   2、truncate table 表名称                     eg: truncate  table dbo.Sys_Test                  
   3、delete from 表名称 where 列名称 = 值      eg: delete from dbo.Sys_Test where test='test'
 二、drop,truncate,delete区别
     1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
        drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。
     2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。
        注意:truncate 不能删除行数据,要删就要把表清空。
     3、delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存
        以便进行进行回滚操作。
        truncate与不带where的delete :只删除数据,而不删除表的结构(定义)
     4、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用delete。
        如果要删除表定义及其数据,请使用 drop table 语句。  
    5、对于由foreign key约束引用的表,不能使用truncate table ,而应使用不带where子句的delete语句。由于truncate table 记录在日志中,所以它不能激活触发器。
     6、执行速度,一般来说: drop> truncate > delete。
     7、delete语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
              truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。 

其他常用命令:

查看服务器的运行状态:status

查看数据库的连接数:show processlist;

查看服务器设置:show variables;

关闭数据库的事务提交:set autocommit=0;       =1的时候是打开数据库的事务提交

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值