MySQL函数、运算符、 数据类型

sql函数

基本sql语句(增,删,改,查)
库操作:

  > show databases;                    #列出所有的库
    > create database db1;             #创建库
    > 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;              #修改表名
    > alte r table t1 add sex char(10);          #添加字段在末位
    > alter table t1 add QQ int after name;      #添加字段在指定字段的后面
    > alter table t1 add uid int first;          #添加字段在首位
    > alter table t1 drop uid;                   #删除字段
    > alter table t1 change id uid int;          #修改字段的名称及属性
    > alter table t1 modify uid int(10);         #修改字段的属性
    > truncate stu_info;                         # 清空表
    > 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 score where 语文 between 61 and 79; # 相当于 语文 >= 61 and 语文 <= 79
> select 姓名,籍贯 from info where 籍贯 in(‘广东’,‘广西’); # 用in代替or
> 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;

外连接: 左,右连接
 左: 显示出左表中所有的记录
 右: 显示出右表中所有的记录
    > 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;       #右连接

函数

database()    select database();   #查看当前所在的库
user()            select user();           #查看当前登陆的用户
password()                                    #给字符串加密,一般用于修改密码

聚合函数

    sum()            select sum(age) from t1;   #显示age字段的和
    avg()             select avg(age) from t1;    #求age字段的平均值
    max()            select max(age) from t1;   #最大值
    min()             select min(age) from t1;   #最小值
    count()          select sex,count(sex) from t1 group by sex;  #统计sex字段每种有多少条记录   
                         select count(*) from pass;  统计表中有多少条非空的记录

时间函数

    1.查看当前时间
        curtime()     #select curtime();
    2.查看当前日期
        curdate()
    3.查看系统时间
        now()
        sysdate()

其他函数

    1.连接函数  concat()
        MariaDB [test]> select concat(username,uid) from pass;
        MariaDB [test]> select concat(username,' ',uid) from pass;
        MariaDB [test]> select concat(username,':',uid) from pass;
        MariaDB [test]> select concat(username,':',uid) as 'username-uid' from pass;

    2.转换成小写  lower()
        MariaDB [test]> update pass set username='ROOT' where username='root';
        MariaDB [test]> select lower(username) from pass;

    3.转换成大写  upper()
        MariaDB [test]> select upper(username) from pass;
        
    4.求长度   length()
        MariaDB [test]> select username,length(username) from pass;

其他常用命令

查看服务器运行状态: status

mysql> status;

查看连接数: show processlist;

mysql> show processlist;

查看服务器设置: show variables;

mysql> show variables like 'socket';

运算符

1.算数运算符
2.比较运算符
3.逻辑运算符
1、算数运算符

+  -  *  /  % ()  power()
MariaDB [test]> select 4*3,3+6,5-2;
+-----+-----+-----+
| 4*3 | 3+6 | 5-2 |
+-----+-----+-----+
|  12 |   9 |   3 |
+-----+-----+-----+
1 row in set (0.00 sec)
mysql> select power(2,10);
+-------------+
| power(2,10) |
+-------------+
|        1024 |
+-------------+

2、比较运算符

< >= <= = != 成立返回1,不成立返回0
MariaDB [test]> select 1>2;
±----+
| 1>2 |
±----+
| 0 |
±----+
1 row in set (0.00 sec)

MariaDB [test]> select 3>2;
+-----+
| 3>2 |
+-----+
|   1 |
+-----+
1 row in set (0.01 sec)

3、逻辑运算符

and  or  not

and  ==  &&   or == ||

MariaDB [test]> select not 4<5;   #not取反
+---------+
| not 4<5 |
+---------+
|       0 |
+---------+`在这里插入代码片`
1 row in set (0.00 sec)
MariaDB [test]> select 4<5  && 3=3;

±------------+
| 4<5 && 3=3 |
±------------+
| 1 |
±------------+
1 row in set (0.00 sec)

MariaDB [test]> select 4<5  && 3!=3;

±-------------+
| 4<5 && 3!=3 |
±-------------+
| 0 |
±-------------+
1 row in set (0.00 sec)

数据类型

数据类型用来约束你能够存放在数据库中的数据内容

数据类型的分类

1、数值类型
2、字符串类型
3、日期时间类型
4、浮点型

一、数值类型

分类:整型和浮点型 
1.整型      
                    存储占的字节数    有符号数范围       无符号数范围
tinyint         1B(8bits)           -128~127          0~255(2^8-1)
smallint        2B               -32768~32767        0~65535 
mediumint      3B          -8388608~8388607     0~16777215
int               4B    -2147483648~2147483647  0~4294967295           
bigint           8B   -9223372036854775808~9223372036854775807    0~18446744073709551615   

在存储的时候,默认是有符号数的

整型可以指定显示宽度,但是并不影响取值范围。

2.浮点型

float(M,D) M是总长度,D小数的位数 存储空间4B
double(M,D) 存储空间8B ???
MariaDB [test]> create table num(
-> tiny tinyint,
-> small smallint,
-> medium mediumint,
-> nint int,
-> big bigint);

MariaDB [test]> desc num;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| tiny   | tinyint(4)   | YES  |     | NULL    |       |
| small  | smallint(6)  | YES  |     | NULL    |       |
| medium | mediumint(9) | YES  |     | NULL    |       |
| nint   | int(11)      | YES  |     | NULL    |       |
| big    | bigint(20)   | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

MariaDB [test]> select * from num;
+------+-------+---------+-----------+-----------+
| tiny | small | medium  | nint      | big       |
+------+-------+---------+-----------+-----------+
|  127 | 32767 | 8388607 | 123456789 | 123456789 |
+------+-------+---------+-----------+-----------+

无符号数例:
MariaDB [test]> create table unnum( tiny tinyint unsigned, small smallint unsigned);
MariaDB [test]> insert into unnum values (123456789,123456789);
MariaDB [test]> select * from unnum;
±-----±------+
| tiny | small |
±-----±------+
| 255 | 65535 |
±-----±------+

zerofill:零填充,补0
id

001
010
100
MariaDB [test]> create table zf (id tinyint zerofill);
MariaDB [test]> insert into zf values (1);
MariaDB [test]> insert into zf values (11);
MariaDB [test]> insert into zf values (111);
MariaDB [test]> select * from zf ;
±-----+
| id |
±-----+
| 001 |
| 011 |
| 111 |
±-----+

二、字符串类型
char 定长字符串 如:char(10) 占用10个字节 括号中的长度范围1~255
varchar 变长字符串 varchar(10) 按照存的字符串的长度分配 括号中的长度范围0~65535
例:存字符A使用varchar会占用2个字节的存储空间
为什么是2字节?
变长字符串需要1个或2个字节存储字符串的长度

values char(4) storage varchar(4) storage
‘’ ’ ’ 4B ‘’ 1B
‘AB’ 'AB ’ 4B ‘AB’ 3B
‘ABCD’ ‘ABCD’ 4B ‘ABCD’ 5B
‘ABCDEF’ ‘ABCD’ 4B ‘ABCD’ 5B

对于char型,存储时候长度不够,默认会在字符串后面补空格,但是查询时,空格会被脱掉。
enum:枚举类型 多个给定值中选择一个 -------------- 单选 set:集合类型 多个给定值中选者一个或多个 -------------- 不定项选择

三、日期时间类型   
DATE:日期型  3字节
    格式:'YYYY-MM-DD'

TIME:
    格式:'HH:MM:SS'

DATETIME
    格式:'YYYY-MM-DD HH:MM:SS'

TIMESTAMP
    格式:'YYYY-MM-DD HH:MM:SS'

YEAR
    格式:'YYYY'
   
MariaDB [test]> create table time_test(
-> d date,
-> t time,
-> dt datetime,
-> ts timestamp,
-> y year);

Query OK, 0 rows affected (0.04 sec)

MariaDB [test]> insert into time_test values(now(),now(),now(),now(),now());

MariaDB [test]> select * from time_test;

±-----------±---------±--------------------±--------------------±-----+
| d | t | dt | ts | y |
±-----------±---------±--------------------±--------------------±-----+
| 2017-06-01 | 10:17:07 | 2017-06-01 10:17:07 | 2017-06-01 10:17:07 | 2017 |
±-----------±---------±--------------------±--------------------±-----+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值