MYSQL入门操作及注意事项

对数据库的操作:

数据库的创建:
create database [in not exists] db_name [character set utf8] [collate collation_name]
in not exists:使用这句话之后,创建的数据库存在就不再创建,如果没有这句话,创建的数据库存在就报错。
character set utf8:库采用什么码表,最好每次使用
create database testbase character set utf8 collate utf8_general_c1;
查看库的创建信息:show database db_name;
删除创建的数据库:drop database db_name;
修改数据库的字符集编码:
alter database db_name character set utf8;
备份数据库:
mysqldump -u root -p db_name>path_name (此命令属于计算机的命令,不能在sql命令行下执行,必须在系统命令行下执行,并且不能有分号)
恢复数据库:
    1、恢复只能恢复数据中的数据,要恢复库,必须先创建数据库。
        1)进入数据库:use db_name;
        2)执行恢复source back_path_naem (source:执行sql脚本)
    2、恢复只能恢复数据中的数据,要恢复库,必须先创建数据库。
        1)进入数据库:use db_name;
        2)mysql -u root -p db_name<path_name(此命令属于计算机系统命令)

数据类型:

1、数值类型:
    bit(5) 保存5个二进制位,不指定位数,默认是1。
    tinyint[unsigned][zerofill]:一个字节大小-127--128,跟上后面两个参数的任何一个标识无符号数0--255
    bool,boolean:数据库中没有turu,false,数据库中保存的是0或1,和使用bit(1)效果相同
    smallint[unsigned][zerofill],表示2的16次方,对应java中的short
    int [unsigned][zerofill]:2的32次方
    bigint[unsigned][zerofill]:2的64次方
    float[m,d] [unsigned][zerofill]:m,数据长度,d,保留的小数位数。
    double[m,d] [unsigned][zerofill]:m,数据长度,d,保留的小数位数。  
    decimal[m,d]:精度最高,可用于货币使用。
2、文本类型:
   1)char(size)     定长:最大大小为size,存一个字符,大小也是size。size设置最大为255
   2)varchar(size)  变长:最大大小为size,存一个字符,大小为1。size设置最大为65535
   3)blob,longblob:存储二进制数据(图片,图像等)2的10次方为1k,2的20次方为1M.实际开发中将大数据以文件形式存储而不直接存储在数据库中。
   4)text(oracal中为clob),longtext(longclob)
3、时间日期
        date, datetime,timestamp

对表的基本操作:

查看表创建细节:show create table table_name
查看表的结构:desc table_name

修改表:
    增加一个字段:alter table table_name add 字段 类型;
    修改字段的类型:alter table table_name modify 字段 类型;
    修改表中的字段名:altert table table_name change column 原字段名 新字段名 字段类型;
    删除字段:alter table table_name drop 字段名;   
    修改表的字符编码:alter table 表名 character set utf8;
    修改表名:rename table old_name  to new_name;
    删除表:drop table table_name;
    
创建表
    cteate table Student(
            id int,
            name varchar(20)
    );
    
数据插入:insert into
    字符,字符串和如期类数据使用单引号。
    插入空值,不指定或使用null
    细节:
      1、可以将任何数据都使用单引号。
      2、插入数据的时候跟上字段名称,便于后期维护。
      3、输入中文字符乱码问题:
          原因:例如,数据表使用的编码为utf-8,客户端输入的字符为gb2312编码,此时将数据存入到数据表中,查询的是utf-8码表,就会出现乱码问题。
          解决办法:
               1)显示所有字符集编码变量:show variables 'character%'
               2)存储乱码:设置客户端编码为gb2312:set character_set_client=gb2312
               3)显示结果乱码:set character_set_results='gb2312'
        
修改数据:
  update table_name set 字段名 = 值,字段名 = 值 where 条件
      注意:书写update先书写where条件,以免忘记。

删除数据:
  delete from table_name where 条件:删除数据时一条条的进行删除。
  truncate table_name:摧毁整个表,重建表结构。

简单查询数据:
   一般查询: select 字段名,字段名 from table_name
   过滤重复数据:select distinct 字段名,字段名 from table_name
   查询中使用别名:select name as 姓名, enScore + chScore + 10 as 总成绩 from tabe_name(不跟as也可以)
   结果排序:select * from table_name order by 字段名 asc(升)|desc(降序),默认是升序

比较运算符:
  between ...and...:包含前后的值
  显示在列表中的值:in(value1, value2),值为value或者value2
  模糊查询:like '张pattern'   pattern:_代表一个字符,%代表0个或多个字符
    is null判断是否为null

合计函数:
     count(字段名):计算条目数量,只统计有值的行,NULL不统计
     select count(*) from table_name where 条件

     sum(字段名 + 字段名 + ...):求和,只适用于数值,非数值报错。

    avg(字段名 + 字段名 + ...):求平均数

    max(字段名 + 字段名 + ...)/min(字段名 + 字段名 + ...):求一列中的最大值,最小值

分组:group by
    select name, sum(price) from goods group by name:相同name的分为一组,对同一组的价格进行求和

having:过滤(where也可以用于过滤,区别在于having可以跟合计函数)

时间日期相关函数

addtime(date1, date2):将data2加到data1
current_date():获取当前日期
current_time():获取当前时间
current_timestamp():获取当前时间戳
date(datetime):获取datatime的日期部分
date_add(date1,date2):data1中加上data2
date_sub(date1, date2):data1中减去data2
datediff(date1,date2):两个时间差
now():获取当前时间
year|month|date(datetime):年月日

字符串相关函数

charset(str):返回字符串字符集
concat(str,str):链接字符串
instr(str1, str2):返回str2在str1中出现的位置,,没有返回0
ucase(str):转换成大写
lcase(str):转换成大写
left(str,len):从str左边起去len个字符
length(str):str长度
replace(str, search, replace):将str中的search替换成replace
strcmp(str1,str2):逐个字符比较两个字符串大小
substring(str, position, len):从str的position开始去len个字符
ltrim(str), rtrim(),trim():去掉两边空格

数学相关函数

abs(num):去绝对值
bin(num):十进制转二进制
ceiling(num):向上取整
conv(num, from_base, to_base):进制转换
floor(num):向下去整
forrmat(num, decimal_places):保留小数位数
hex(num):转十六进制
least(num1, num2, ....):求最小值
mod(num, denominator):求余
rand([seed]) 

定义表的约束

主键约束:
     primary key:不允许重复,不能为空,且唯一
     删除主键约束:alter table table_name drop primary key;
     联合主键:primary key(tea_id, stu_id)
     
定义主键自动增长:
     auto_increment;
     id int primary key auto_increment
     如果将其中一条数据删除,此id将不会填充

定义唯一约束:
     unique
     id int primary key auto_increment;
     name varchar(40) unique;

定义唯一约束:
     not null
     name varchar(40) unique not null;

定义外建约束:
student_id int,(此id来自学生表中的id), 
constraint 外建名称 foreign key(student_id) references student(id)

数据表的设计

一对多(多对一):在"多"的一方中创建外建保存"一"的一方的Id。

多对多:创建中间表表示两张表的关系。

一对一:具有主从关系,人-主,身份证-从。主可以没有从,从不能没有主。
     在从表中,将从表的主键也设置为外建,并且外建来自于主表的主键。

自关联数据的数据库设计:(家族关系)
     在同一张表中创建字段描述关系(创建一个字段保存父类编号即可)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,567评论 18 399
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,205评论 0 4
  • 2018南昌正中美术考研工作室招生简章 【目标院校】 以输送至江西师范大学美术专业为主,兼顾其他院校。 【招生对象...
    不为修来世阅读 124评论 0 0
  • 聂申龙 中德安联人寿保险有限公司济南SSC 六项精进临沂242期乐观一组 【日精进打卡第195天】 【知~学习】《...
    聂申龙阅读 199评论 0 0
  • 清欢。
    呆呆77阅读 142评论 0 0