设为首页 收藏本站
查看: 1244|回复: 0

[经验分享] 深入浅出SQL读书笔记

[复制链接]

尚未签到

发表于 2018-10-22 12:57:21 | 显示全部楼层 |阅读模式
  1、
  CREATE TABLE drink_info(drink_name VARCHAR(30),cost DEC(8,2),carbs DEC(8,2),color VARCHAR(20),ice CHAR(1),calories INT);
  2、对char varchar进行运算符比较运算,比较运算符会按字母顺序地评估所有事物的大小。
  假设你要选出所有名称以“L”开头的饮料,查询语句如下:
  SELECT drink_name FROM drink_info WHERE drink_name >= 'L' AND drink_name < 'M';
  3、不可以直接选择NULL,但可以利用关键字选择NULL
  SELECT drink_name FROM drink_info WHERE calories IS NULL;
  4、LIKE 喜欢和通配符在一起,第一通配符是%,它是任意数量的未知字符的替身
  SELECT first_name FROM my_contacts WHERE first_name LIKE '%im';
  LIKE喜欢的第二个通配符是下划线 _ ,它是一个未知字符的替身。
  SELECT first_name FROM my_contacts WHERE first_name LIKE '_im';
  5、BETWEEN 查询某一范围内的语句,范围的起止值也会包含在查找范围内。
  SELECT drink_name FROM drink_info WHERE calories BETWEEN 30 AND 60;
  6、IN  NOT IN 注意NOT 要放在WHERE AND OR 的后面,NOT IN 中的NOT除外;
  SELECT drink_name FROM easy_drinks WHERE main = IN ('peach nectar','soda');
  SELECT drink_name FROM easy_info WHERE NOT carbs BETEWEEN 3 AND 5;
  SELECT date_name FROM black_book WHERE NOT date_name LIKE 'A%'
  AND NOT date_name LIKE 'B%';
  7、我负责你的数据                       DEC,INT
  我可以扔掉你不想要的表               DROP TABLE
  T或F是我的最爱                       CHAR(1)
  我帮你记住你母亲的生日               DATE
  我手上拥有所有表                     CREATE DATABASE
  我跟一般数字的感情不错,但我讨厌分数 INT
  我喜欢长篇大论                       BLOB
  这里是存储所有东西的地方             CREATE TABLE
  我知道下星期的牙医门诊在什么时候     DATETIME
  会计师最爱我了                       DEC(6,2)
  我可以让你看到表的格式               DESC
  8、DELETE语句就是从表中删除一行数据所需的工具。
  DELETE FROM clown_info WHERE activities = 'dancing';
  DELETE的规则:
  DELETE不能删除单一列中的值或表中某一列的所有值;
  DELETE可用于删除一行或多行,根据WHERE子句而定
  我们已经知道如何从表中删除一行,也可以删除多行。为了实现这个目标,我们利用WHERE子句告诉
  DELETE该选择哪些行。WHERE子句和搭配SELECTE时的使用方法完全相同,凡是用于WHERE子句中的关    键字,如LIKE、IN、BETWEEN,都可以在此处使用,而且所有条件都能更准确地要求RDBMS删除特定      行。
  还有,这一段语句可以删除表中的每一行;
  9、UPDATE 它能更新一列或多列的值。就像SELECT和DELETE,UPDATE也能通过使用WHERE子句来精确地制定要更新的行。
  UPDATE doughnut_ratings SET type='glazed' WHERE type = 'plain glazed';
  关键字SET告诉RDBMS,它主要把WHERE子句提到的原始列值改为它这一句中的值。
  UPDATE的规则:
  使用UPDATE,你可以改变单一列或所有列的值。 在SET子句中加入更多column=value组,其间以逗号分隔:
  UPDATE可用于更新单一行或多行,一切都交给WHERE子句决定。
  UPDATE语句能运用在表的多条记录上。它可以和基础数学运算符一起使用,可以操作数值数据。
  10、创建表的步骤:
  1)挑出事物,挑出你希望表描述的某样事物。(什么事你希望表说明的主要事物呢?)
  2)列出一份关于那样事物的信息列表,这些信息都是使用表时的必要信息
  (你将如何使用这张表)
  3)使用信息列表,把关于那样事物的综合信息拆分成小块信息,以便用于组织表。
  (如何才能最轻松地查询这张表)
  1:你的表在描述什么事物?(是描述小丑、乳牛、甜甜圈或人)
  2:以何种方式使用表取得描述的事物呢?(设计表时要让查询容易一点)
  3:列是否包含原子性数据,可让查询既简短又直逼要害?
  规范化表的优点:
  1:规范化表中没有重复的数据,可以减小数据库的大小。
  2:因为查找的数据较少,你的查询会更为快速。
  11、主键规则
  即将成为主键的列必须在创建时一并设置。
  主键是表中的某个列,它可以让每一条记录成为唯一的。
  主键不可以为NULL
  插入新记录时必须指定主键值
  主键必须简洁
  主键值不可以被修改
  12、CREATE TABLE my_table (id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(20),last_name VARCHAR(30),PRIMARY KEY(id));
  AUTO_INCREMENT 会忽略NULL
  13、ALTER TABLE my_contacts
  ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST,
  ADD PRIMARY KEY(contact_id);
  这里的FIRST,也可以用LAST SECOND替代。
  ALTER 命令几乎能让你改变表里的一切,而且不需要重新插入数据。但也要小心,如果改变列的类型,
  你可能就会有遗失数据的风险。
  14、SHOW CREATE TABLE 使用这个命令来呈现创建现有表的正确语法。
  PRIMARY KEY      主键 一个或一组能识别唯一数据行的列
  AUTO_INCREMENT    若在列的声明中使用这个关键字,则每次执行INSERT命令来插入数据时,它都会自动给列赋予唯一的递增整数值
  15、ALTER TABLE my_contacts ADD COLUMN phone VARCHAR(10) AFTER last_name;
  关键字AFTER 紧跟在新添加的列的名称后面。 AFTER 是可选关键字,如果不使用它,新列则会添加至表的最后。
  16、DESCRIBE 查看这个表的构成。它会说明此列是否为主键,并且告诉我们每列存储的数据类型。
  DESCRIBE tablename;
  17、表的改名换姓

  >  projekts是旧的表名,project_list 表新的名字。
  18、把number列改名为proj_id,并把它设置为AUTO_INCREMENT,然后将它标注为主键
  ALTER TABLE project_list CHANGE COLUMN number proj_id INT NOT NULL AUTO_INCREMENT,
  ADD PRIMAY KEY (proj_id);
  用一条语句改变两个列。要修改descriptionofproj和contractoronjob列的名称,同时更改它们的数据类型。我们所要做的只是在一条ALTER TABLE语句中放入两个CHANGE COLUMN,并在中间加上分隔用的逗号。
  ALTER TABLE project_list CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100),
  CHANGE COLUMN contractoronjob con_name VARCHAR(30);
  注意: 如果把数据改成另一种类型,你可能会丢失数据
  如果你想改变的数据类型和原始类型不兼容,命令则不会执行,SQL软件也会抱怨语句有问题
  但真正的惨剧可能发生在类型兼容的情况下,你的数据可能被截断。
  19、MODIFY 它只会修改列的类型而不会干涉它的名称
  例如你要把proj_desc列的字符长度修改为VARCHAR(120)以容纳更长的说明文字。只要这样做:
  ALTER TABLE project_list MODIFY COLUMN proj_desc VARCHAR(120);
  20、你的列越多,RDBMS的工作就越累,数据库所占用的空间就越大。当表还小时,这种情况并不明显,但随着数据的增长,你会发现查询跑的越来越慢,而计算机的处理器也会运作的越来越辛苦。
  21、删除表project_list中的start_date列
  ALTER TABLE project_list
  DROP COLUMN start_date;
  ALTER TABLE hooptie
  RENAME TO car_table,
  ADD COLUMN car_id INT NOT NULL AUTO_INCREMENT FIRST,
  ADD PRIMARY KEY (car_id),
  ADD COLUMN vin CHAR(16) AFTER car_id,
  CHANGE COLUMN mo model VARCHAR(20),
  MODIFY COLUMN color AFTER model,
  MODIFY COLUMN year SIXTH,
  CHANGE COLUMN howmuch price DECIMALIT(7,2);
  移除主键的设置
  ALTER TABLE your_table DROP PRIMARY KEY;
  移除自动添加功能
  ALTER TABLE your_table CHANGE you_id
  your_id INT(11) NOT NULL;
  注意,每个表中只有一列可以加上AUTO_INCREMENT,该列必须为整数类型而且不能包含NULL。
  22、想同时改变列的名称和类型时请用  CHANGE
  只想改变数据类型时请用 MODIFY
  DROP COLUMN的功能是从表中卸除指名的列
  使用RENAME 改变表的名称
  使用 FIRST,LAST,BEFORE column_name,AFTER column_name,SECOND,THIRD,FOURTH等关键字,可以
  调整列的顺序。
  有些RDBMS只有在添加新列时才允许改变列的顺序。
  23、下面列出较常用的字符串辅助函数
  SUBSTRING(your_string,start_position,length)能截取一部分your_string字符串,截取的起始位置为
  start_position,截取长度当然由length指定。
  SELECT SUBSTRING('San Antonio,TX',5,3);
  UPPER(your_string)和LOWER(your_string)分别可把整组字符串改为大写或小写。
  REVERSE(your_string)的作用正如其名:反转字符串里的字符排序
  LTRIM(your_string)与RTRIM(your_string)会返回清除多余空格后的字符串,他们分别清除字符左侧(前面)和右侧(后面)的多余空格。
  LENGTH(your_string)返回字符串中的字符数量。
  注意,字符串函数不会改变存储在表中的内容,他们只是把字符串修改后的模样当成查询结果返回。
  例子,我们要试着把location列中的信息取出,然后分开存储到两个新列中(city和state)
  UPDATE my_contacts
  SET state = RIGHT(location,2);
  UPDATE my_contacts
  SET city = SUBSTRING_INDEX(location,',',1);


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625009-1-1.html 上篇帖子: 几种SQL语句的写法 下篇帖子: 查询复杂sql的表的大小
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表