MYSQL-基本指令

基本sql数据语句

mysql -uroot(用户名) -p <表名>
show databases;
use ***(库名);
show tables;
desc 表名;
quit; 退出sql
inser into 表名 (列值)values (各列对应的值);
update 表名 set 列名1=列值1,列名2=列值2 where 查询条件;
delete from 表名 where 查询条件;
drop table 表名;

sql自建函数:now():返回当前日期和时间

select now();

sql数据类型

字符型数据:

定长:char(20) /最大长度255个字节,长度不足,则使用空格向右填充
不定长:varchar(20) /最大长度65535个字节
文本类型及其最大长度:tinytext,255;text,65535;mediumtext,16777215;longtext,4294967295
查看服务器支持的字符集:show character set;
可以为列设置支持的字符集:…varchar(20) character set utf-8;
可设计整个库的默认字符集:create database ** character utf-8;

  • 在mysql中查看当前遇到字符长度异常会如何处理(strict模式则会抛出异常;ansi模式会默认截断):select @@session.sql_mode;set sql_mode='ansi'
  • 由于sql使用单引号分隔字符串,所以要注意验证入参带‘,和出参带’的情况(可以使用自建函数quote(列名))。
  • 生成特殊字符:
    根据字符串查找对应ascii码:select ASCII('?');
    根据字符集编号返回字符:select char(158);.
    字符拼接 select concat('aaa','b',char(148));
  • 操作字符串:
    1、返回字符串长度:select length(列名) from favorite_food;
    2、 返回匹配的字符串起始位置:select position('oo' in 列名) from favorite_food;,ps:positon()返回0表示未匹配到;sql中字符串的第1个字符从1开始;
    locate(‘字符串’,要匹配的列名,指定从第n的位置开始匹配);
    3、比较字符串:
    比较位置先后顺序select strcmp('pizza','noodles');相当于先后找到前后者的参数位置后,相减,如果负数,则改公式就返回-1(表明前者靠前);同样还会返回0/1。
    比较是否匹配:select food like '%a' from favorite_food;如果没有自定义列名,food like '%a’会成为临时表的列名,1表符合,0表不符合,null表无法比较因为无值。1???如果是列是数值型数据呢???同样regexp也可以使用上。
    4、select insert(‘原始字符串’,字符串开始操作的位置,需要替换的字符串数if值为0表明替换字符串会将插入其中,‘要替换的字符串’) ;
数值型数据:

整数类型、浮点类型(可定义为无符号型unsigned)
内建函数:取余:mod(x,y);求幂:pow(x,y);向上/下截取整型数字:cell(x)floor(x);四舍五入:round(被操作的数,保留小数点数),第2位如果是负数,表明将取整多少位select round(15.0001,-1);返回20;如果x是正数返回1,0返回0,负数返回-1:sign(x);绝对值:abs(x)

时间数据:

date;datetime;time
mysql提供了:全局时区&会话社区(for登录用户)select @@global.time_zone,@@session.time_zone;

例子

创建1个表:

> create table person
    -> (person_id smallint unsigned,
    -> fname varchar(20),
    -> lname varchar(20),
    -> gender enum('M','F'),
    -> birth_date DATE,
    -> street varchar(30),
    -> city varchar(20),
    -> state varchar(20),
    -> country varchar(20),
    -> postal_code carchar(20),
    -> constraint pk_person primary key (person_id));
mysql> desc person;
+-------------+----------------------+------+-----+---------+-------+
| Field       | Type                 | Null | Key | Default | Extra |
+-------------+----------------------+------+-----+---------+-------+
| person_id   | smallint(5) unsigned | NO   | PRI | NULL    |       |
| fname       | varchar(20)          | YES  |     | NULL    |       |
| lname       | varchar(20)          | YES  |     | NULL    |       |
| gender      | enum('M','F')        | YES  |     | NULL    |       |
| birth_date  | date                 | YES  |     | NULL    |       |
| street      | varchar(30)          | YES  |     | NULL    |       |
| city        | varchar(20)          | YES  |     | NULL    |       |
| state       | varchar(20)          | YES  |     | NULL    |       |
| country     | varchar(20)          | YES  |     | NULL    |       |
| postal_code | varchar(20)          | YES  |     | NULL    |       |
+-------------+----------------------+------+-----+---------+-------+
10 rows in set (0.01 sec)

列解释:第4列显示该列是否作为键值(主键<保证不重复>或外键);第5列显示插入该列数据时忽略该列,是否提供默认值。
修改列信息(但是在有外键使用的时候无法修改,那怎么解决?):

alter table person modify person_id smallint unsigned auto_increment; 

继续:

create table favorite_food 
(person_id smallint unsigned,
food varchar(20),
constraint pk_favorite_food primary key (person_id,food),   *主键包含两列*
constraint fk_fav_food_person_id foreign key (person_id) references person (person_id)); *外键约束:该列值只能来自person表的person_id*

PS:以上均来自于《sql学习指南第2版》


  1. 2 ↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值