搞定linux上MySQL编程(二):MySQL语法基础操作

转自:https://blog.csdn.net/shallnet/article/details/46483699

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】
	sql(structured query language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
	sql语言包含3部分:
1. 数据定义语言(DDL),用于定义和管理对象,例如数据库、数据表以及试图等。例如create、drop、alter等语句。
2. 数据操作语言(DML),用于操作数据库中数据,例如select、 insert、update、delete等。
3. 数据控制语言(DCL),用于管理数据库,包含管理权限及数据更改。例如grant、revoke、commit、rollback等。

	类似高级开发语言,sql中数据也有不同的类型,不同的数据类型存放不同的数据,sql中数据类型分为5种:字符型(存放一段较短的字符串)、文本型(存储大串的字符)、数值型(存放整数、实数、浮点数)、逻辑型(即布尔型,取值0或1)、日期型。sql语句中也可以添加注释,有如下三种:“#”(类似shell脚本的注释)、“--”、和类似c语言的/*....*/可多行注释。


数据库的操作:
1.创建数据库:create database <数据库名称>。例如:
create database db_users;

 
  1. mysql> create database db_users;

  2. Query OK, 1 row affected (0.00 sec)

  3.  
  4. mysql> show databases;

  5. +--------------------+

  6. | Database |

  7. +--------------------+

  8. | information_schema |

  9. | db_users |

  10. | mysql |

  11. | test |

  12. +--------------------+

  13. 5 rows in set (0.00 sec)

2.删除数据库:drop database <数据库名称>。例如:

 
  1. mysql> drop database db_users;

  2. Query OK, 0 rows affected (0.00 sec)

  3.  
  4. mysql> show databases;

  5. +--------------------+

  6. | Database |

  7. +--------------------+

  8. | information_schema |

  9. | mysql |

  10. | test |

  11. +--------------------+

  12. 3 rows in set (0.00 sec)

  13.  
  14. mysql>

表的操作:表是数据库重要组成部分,数据库通常由一个或多个数据表组成。数据库中所有数据或信息都被保存在这些数据表中。每一个表名称在数据库中是唯一的,表由行和列组成,每一列列包括该列名称、数据类型和其他属性,而行则具体包含某一列的记录或数据。1.创建表: create table <表名> (<列名> <数据类型> [<列级完整性约束条件>][,<列名> <数据类型> [<列级完整性约束条件>] ]...[,<表级完整性约束条件> ])实际使用中一般只用到比较简单的表创建语言,只需要表面和字段定义。例如:

 
  1. mysql> use db_users;

  2. Database changed

  3. mysql> create table regusers (

  4. -> userid int auto_increment not null primary key,

  5. -> username char(32),

  6. -> birth date);

  7. Query OK, 0 rows affected (0.01 sec)

  8.  
  9. mysql> describe regusers;

  10. +----------+----------+------+-----+---------+----------------+

  11. | Field | Type | Null | Key | Default | Extra |

  12. +----------+----------+------+-----+---------+----------------+

  13. | userid | int(11) | NO | PRI | NULL | auto_increment |

  14. | username | char(32) | YES | | NULL | |

  15. | birth | date | YES | | NULL | |

  16. +----------+----------+------+-----+---------+----------------+

  17. 3 rows in set (0.00 sec)

2.修改表,当发现表结构不满足要求时,使用alter table语句修改列属性,甚至可以修改表名称。修改语法如下:alter table <表名>[ADD <新列名> <数据类型> [完整性约束] ][DROP <完整性约束>][ALTER COLUMN <列名> <数据类型>];例如原来regusers表中没有“最后登录时间”属性,可以通过修改表解决该问题。如下:

 
  1. mysql> alter table regusers add last_login date;

  2. Query OK, 0 rows affected (0.01 sec)

  3. Records: 0 Duplicates: 0 Warnings: 0

  4.  
  5. mysql> describe regusers;

  6. +------------+----------+------+-----+---------+----------------+

  7. | Field | Type | Null | Key | Default | Extra |

  8. +------------+----------+------+-----+---------+----------------+

  9. | userid | int(11) | NO | PRI | NULL | auto_increment |

  10. | username | char(32) | YES | | NULL | |

  11. | birth | date | YES | | NULL | |

  12. | last_login | date | YES | | NULL | |

  13. +------------+----------+------+-----+---------+----------------+

  14. 4 rows in set (0.00 sec)

  15.  
  16. mysql>

3. 删除表,drop table <表名>,<表名>...;可以指定多个表,同时删除。记录的操作:数据库中记录就是实际的数据信息,数据的存储也是通过数据记录来体现的。sql的功能主要体现在对这些记录的操作上。存储记录的前提是必须有数据库和数据表,有了表之后就可以进行插入、删除、更新操作了。1.插入记录,使用insert语句向指定数据表中插入新的数据行。语法格式如下:insert into <表名> [(<属性列1>,<属下列2>...)] values (<常量1> [,<常量2>] ...); 例如:

 
  1. mysql> insert into regusers (userid, username, birth, last_login) values (10000, 'allen', '1981-1-1', '2014-2-2');

  2. Query OK, 1 row affected (0.00 sec)

  3.  
  4. mysql> insert into regusers (username, birth, last_login) values ('brooks', '1982-4-2', '2014-4-30');

  5. Query OK, 1 row affected (0.00 sec)

  6.  
  7. mysql> insert into regusers (username, birth, last_login) values ('curry', '1985-8-12', '2014-1-17');

  8. Query OK, 1 row affected (0.00 sec)

  9.  
  10. mysql> select * from regusers;

  11. +--------+----------+------------+------------+

  12. | userid | username | birth | last_login |

  13. +--------+----------+------------+------------+

  14. | 10000 | allen | 1981-01-01 | 2014-02-02 |

  15. | 10001 | brooks | 1982-04-02 | 2014-04-30 |

  16. | 10002 | curry | 1985-08-12 | 2014-01-17 |

  17. +--------+----------+------------+------------+

  18. 3 rows in set (0.00 sec)

  19.  
  20. mysql>

4. 更新记录,使用update语句更新或修改满足规定条件的记录。update语句格式为:update <表名> set <列名>=<表达式> [,<列名>=<表达式>]... [where <条件>];例如将regusers表中姓名为brooks的记录的记录修改为ben,如下:

 
  1. mysql> update regusers set username='ben' where username='brooks';

  2. Query OK, 1 row affected (0.00 sec)

  3. Rows matched: 1 Changed: 1 Warnings: 0

  4.  
  5. mysql> select * from regusers;

  6. +--------+----------+------------+------------+

  7. | userid | username | birth | last_login |

  8. +--------+----------+------------+------------+

  9. | 10000 | allen | 1981-01-01 | 2014-02-02 |

  10. | 10001 | ben | 1982-04-02 | 2014-04-30 |

  11. | 10002 | curry | 1985-08-12 | 2014-01-17 |

  12. +--------+----------+------------+------------+

  13. 3 rows in set (0.01 sec)

  14.  
  15. mysql>

5. 删除记录。使用delete语句删除数据表中满足指定条件的记录。delete语句的语法为:delete from <表名> [where <条件>]; 例如删除表中userid为10002的的记录如下:

 
  1. mysql> delete from regusers where userid=10002;

  2. Query OK, 1 row affected (0.02 sec)

  3.  
  4. mysql> select * from regusers;

  5. +--------+----------+------------+------------+

  6. | userid | username | birth | last_login |

  7. +--------+----------+------------+------------+

  8. | 10000 | allen | 1981-01-01 | 2014-02-02 |

  9. | 10001 | ben | 1982-04-02 | 2014-04-30 |

  10. +--------+----------+------------+------------+

  11. 2 rows in set (0.00 sec)

  12.  
  13. mysql>

数据库查询操作:sql使用select语句实现数据库的查询。查询是数据库使用最为频繁的操作。select可以查询表中指定满足条件的若干列,同时可对查询结果按一定顺序排序。

查询表tb_users中所有记录sql如下:
 
 
  1. mysql> select * from tb_users;

  2. +--------+----------+------------+------------+

  3. | userid | username | birth | last_login |

  4. +--------+----------+------------+------------+

  5. | 10000 | allen | 1981-01-01 | 2014-02-02 |

  6. | 10001 | ben | 1982-04-02 | 2014-04-30 |

  7. | 10002 | curry | 1985-08-12 | 2014-01-17 |

  8. +--------+----------+------------+------------+

  9. 3 rows in set (0.00 sec)

查询出生年月小于1983-1-1的所有用户:
 
 
  1. mysql> select * from tb_users where birth < '1983-1-1';

  2. +--------+----------+------------+------------+

  3. | userid | username | birth | last_login |

  4. +--------+----------+------------+------------+

  5. | 10000 | allen | 1981-01-01 | 2014-02-02 |

  6. | 10001 | ben | 1982-04-02 | 2014-04-30 |

  7. +--------+----------+------------+------------+

  8. 2 rows in set (0.00 sec)

查询出生年月大于1982-1-1,并且按最后登录时间排序:
 
 
  1. mysql> select * from tb_users where birth > '1982-1-1' order by last_login;

  2. +--------+----------+------------+------------+

  3. | userid | username | birth | last_login |

  4. +--------+----------+------------+------------+

  5. | 10002 | curry | 1985-08-12 | 2014-01-17 |

  6. | 10001 | ben | 1982-04-02 | 2014-04-30 |

  7. +--------+----------+------------+------------+

  8. 2 rows in set (0.00 sec)

只显示用户及其最后登录时间:
 
 
  1. mysql> select username,last_login from tb_users;

  2. +----------+------------+

  3. | username | last_login |

  4. +----------+------------+

  5. | allen | 2014-02-02 |

  6. | ben | 2014-04-30 |

  7. | curry | 2014-01-17 |

  8. +----------+------------+

  9. 3 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/qq_33195791/article/details/81672992