MySql基础

SQL基础

SQL分类

DDL(Data Definition Languages)语句:

数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引、等数据库对象。常用语句关键字包括create、drop、alter等。

DML(Data Manipulation Languages)语句:

数据操控语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字包括insert、delete、update和setect等。

DCL(Data Control languages)语句:

数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要语句关键字包括grant、revoke等。

DDL语句

 1.  创建数据库
    CREATE DATABASE dbname
    
    选择要操作的数据库
    USE dbname
    
    查看数据库中创建的所有数据表
    SHOW tables
    
 2.  删除数据库
    drop database dbname
    
 3.  创建表
     CREATE TABLE tablename(
         column_name1 column_type_1 constraints,
         column_name2 column_type_2 constraints,
         ···
         column_namen column_type_n constraints)
     
     查看表定义
     DESC tablename; or\G
     
 4.  删除表
     DROP TABLE tablename
     
 5.  修改表
 
     修改表类型
     ALTER TABLE tablename MODIFY[COLUMN]column_defintion[FIRST|AFTER col_name]
     例:alter table emp modify ename varchar(20)
     
     增加表字段
     ALTER TABLE tablename ADD[COLUMN] column_definition [FIRST|AFTER col_name]
     例:alter table emp add column age int(3);
     
     删除表字段
     ALTER TABLE tablename DROP [COLUMN] col_name
     
     字段改名
     ALTER TABLE tablename CHANGE [COLUMN] old_col_name coumn_definition [FIRST|AFTER col_name]
     例:alter table emp change age age1 int(4);
     
change和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便。但是change的优点是可以修改列名称,modify则不能。

     修改字段排列顺序
     
     例:将新增字段birth date加载ename之后
         alter table emp add birth date after ename;
        修改字段age,将它放在最前面
         alter table emp modify age int(3) first;
         
      修改表名
      ALTER TABLE tablename RENAME [TO] new_tablename
      例:alter table emp rename emp1

DML语句

 1.  插入记录
 
     INSERT INTO tablename(field1,field2,···fieldn)VALUES(value1,value2,···,valuen);
     例:insert into emp (ename,hiredate,sal,deptno)values('zzx1','2000-01-01','2000','1');
         也可以不指定字段名称,但是后面value要对应好字段。如果只插入其中几个字段,没写的字段自动加NULL、默认值、自增下一个数字等。
         
     也可以一次性插入多条记录
     INSERT INTO tablename(field1,field2,····fieldn)
         VALUES(record1_value1,record1_value2,···record1_valuen,
               record2_value1,record2_value2,···record2_valuen,
                ···
                recordn_value1,recordn_value2,···recordn_valuen)
                ;
                
 2.  更新记录
 
     UPDATE tablename SET field1=value1,field2=value2,···fieldn=valuen[WHERE CONDITION]
     例:将表emp中ename为'lisa'的薪水(sal)从3000涨到4000
         update emp set sal=4000 where ename='lisa';
         
         
     使用update命令同时更新多个表中数据
     UPDATE t1,t2,···,tn set t1.field1=expr1,tn.field=exprn [WHERE CONDITION]

常用函数

    1.字符串函数
    
        MySQL常用字符串函数
    
       CONCAT(S1,S1,...Sn)        连接S1....为一个字符串
       INSERT(str,x,y,instr)      将字符串str从x位置开始,y个字符长的子串替换为字符串instr
       LOWER(str)              将字符串str中的所有字符变为小写
       UPPER(str)              ...大写...
       LEFT(str,x)            返回字符串str最左边的x个字符
       RIGHT(str,x)           ...右边...
       LPAD(str,n,pad)         用字符串pad对str最左边进行填充,知道长度为n个字符长度。
       RPAD(str,n,pad)         ...右边...
       LTRIM(str)              去掉字符串str左侧的空格
       RTRIM(str)              ...右侧...
       TRIM(str)              去掉字符串行尾和行头的空格
       REPEAT(str,x)           返回str重复x次的结果
       REPLACE(str,a,b)        用字符串b替换字符串str中所出现的字符串a
       STRCMP(s1,s2)           比较字符串s1和s2
       SUBSTRING(str,x,y)       返回从字符串str x位置起y个字符串长度的字串 
       
     2.数值函数
     
     
         MySQL中常用数值函数
         
       ABS(x)                 返回x的绝对值
       CEIL(x)                返回大于x的最小整数值
       FLOOR(x)               返回小于X的最大整数值
       MOD(x,y)               返回x/y的模 #求余数
       RAND()                 返回0~1的随机值
       ROUND(x,y)              返回参数x的四舍五入的有y位小数的值
       TRUNCATE(x,y)           返回数字x截断为y位小数的结果
       
     3.日期和时间函数
         MySQL中常用日期和时间函数
         
       CURDATE()               返回当期日期
       CURTIME()               返回当前时间
       NOW()                  返回当前的日期和时间
       UNIX_TIMESTAME(date)        返回日期date的UNIX时间戳
       FROM_UNIXTIME             返回UNIX时间戳的日期值
       WEEK(date)               返回日期date为一年中的第几周
       YEAR(date)               返回日期date的年份
       HOUR(time)               返回time的小时值
       MINUTE(time)              返回time的分钟值
       MONTHNAME(date)            返回date的月份
       DATE_FORMAT(date,fmt)       返回按字符串fmt格式化日期date值
       DATE_ADD(date,INTERVAL expr type)  返回一个日期或时间值加上一个时间间隔的时间值
       DATEDIFF(expr,expr2)        返回起始时间expr和结束时间expe2之间的天数
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值