了解常用的数据库就能了解现在以及未来数据库发展的趋势.2

1.SQL是结构化查询语言

2.SQLite支持大部分的SQL语句,作为一名程序员数据库相关开发是必备的技能.

3.CREATE TABLE 表名

4.CREATE DATABASE 数据库名

5.DROP TABLE 表名

6.DROP DATABASE 数据库名

7.数据库插入语句:有两种

    INSERT INTO 表名 (列名) VALUES (列的值 )

    INSERT INTO 表名  VALUES (所有列的值)

    推荐使用第一种方法。

8.UPDATE 表名 SET  列名='值' WHERE 条件语句


9.DELETE FROM 表名 WHERE 条件语句

    对数据库和表的删除用DROP

    对数据的删除用DELETE

10.ALTER主要用来修改数据库和表

    ALTER TABLE 表名 RENAME TO 要更改的表名

11.ALTER可以用来增加新的一列。
    ALTER TABLE 表名 ADD  字段   字段类型

以下为SQL语句:创建了一个用户表和一个商品表,通过外键关联。


--创建数据库表
CREATE TABLE users(
       pk_userid INTEGER PRIMARY KEY AUTOINCREMENT,       
       name varchar(20) ,       
       age INTEGER ,       
       sex varchar(20),       
       address TEXT ,       
       phone varchar(20)
)

--插入测试数据


INSERT INTO users (name,age,sex,address,phone) VALUES ('华盛顿将军',100,'男','弗吉尼亚','098');
INSERT INTO users (name,age,sex,address,phone) VALUES ('戈林',50,'男','德国','001');
INSERT INTO users (name,age,sex,address,phone) VALUES ('慈禧太后',100,'女','紫禁城','114');
INSERT INTO users (name,age,sex,address,phone) VALUES ('托马斯',100,'男','坦桑尼亚','003');
INSERT INTO users (name,age,sex,address,phone) VALUES ('海伦凯乐',100,'女','弗吉尼亚','678');


--修改表名
ALTER TABLE users_  RENAME TO users;
--添加新的一列,birthday
ALTER TABLE users ADD  birthday DATE;

--为新的一列添加数据
UPDATE users SET birthday='2012-09-21' WHERE pk_userid=1;
UPDATE users SET birthday='1999-03-11' WHERE pk_userid=2;
UPDATE users SET birthday='1777-12-01' WHERE pk_userid=3;
UPDATE users SET birthday='1776-07-04' WHERE pk_userid=4;
UPDATE users SET birthday='1991-09-17' WHERE pk_userid=5;

--创建一个商品表
CREATE TABLE goods (
       pk_gid INTEGER PRIMARY KEY AUTOINCREMENT,       
       fk_userid INTEGER,       
       price INTEGER ,       
       g_name TEXT,       
       FOREIGN KEY  (fk_userid) REFERENCES users (pk_userid)
)

--插入测试数据

INSERT INTO goods (fk_userid,price,g_name) VALUES (1,350,'蚕丝被');
INSERT INTO goods (fk_userid,price,g_name) VALUES (1,234,'棉被');
INSERT INTO goods (fk_userid,price,g_name) VALUES (2,432,'沙发');
INSERT INTO goods (fk_userid,price,g_name) VALUES (2,123,'被套');
INSERT INTO goods (fk_userid,price,g_name) VALUES (4,321,'床头柜');
INSERT INTO goods (fk_userid,price,g_name) VALUES (5,654,'音箱');

--查询戈林的手机号码和买的商品信息
SELECT u.name,g.price,g.g_name FROM users u ,goods g WHERE u.name='戈林' AND u.pk_userid=g.fk_userid;




SELECT 查询:
    过滤重复数据:


    条件语句用到的运算符:

AND  和OR :



ORDER BY 对查询结果进行排序:


升序排列:ORDER BY 字段名 ASC

降序排列:ORDER BY 字段名 DESC


当然也可以同时对多列进行排序:当排序的第一个条件相同的时候,就会根据第二个条件进行排序

SELECT * FROM  subjects ORDER BY name,studyDate DESC ;



综合性练习:

--创建成绩表
CREATE TABLE results (
       pk_stuid INTEGER PRIMARY KEY AUTOINCREMENT,       
       name varchar(20),       
       sex varchar(20),       
       class INTEGER,       
       english INTEGER,       
       chinese INTEGER
)


--插入5条数据
INSERT INTO results (name,sex,class,english,chinese) VALUES ('小强','男',1,92,90);
INSERT INTO results (name,sex,class,english,chinese) VALUES ('春哥','女',1,68,59);
INSERT INTO results (name,sex,class,english,chinese) VALUES ('娜娜','女',1,89,94);
INSERT INTO results (name,sex,class,english,chinese) VALUES ('大奎','男',2,43,58);
INSERT INTO results (name,sex,class,english,chinese) VALUES ('班花','女',2,96,84);

--查询所有数据,结果按照英语成绩升序排列
SELECT * FROM  results ORDER BY english ASC;


--查询所有男生的姓名,性别,班级,英语,语文成绩
SELECT name,sex,class,english,chinese FROM results WHERE sex='男';


--查询所有一班的女生的姓名,英语,语文成绩
SELECT name,english,chinese FROM results WHERE sex='女' AND class=1;

--查询英语或语文成绩不及格的学生的姓名,性别,班级,英语,语文成绩
SELECT name,sex,class,english,chinese FROM results WHERE english<60 OR chinese <60; 

--查询一班英语成绩和语文成绩都大于85分的所有女生的姓名,英语,语文成绩
SELECT name,english,chinese FROM results  WHERE english>85 AND chinese>85 AND sex='女';

--查询所有英语成绩在60分到90分之间的所有学生的姓名,性别,班级,英语语文成绩,结果按照语文成绩降序排列
SELECT name,sex,class,english,chinese FROM results WHERE english BETWEEN 60 AND 90 ORDER BY chinese DESC;




COUNT & AVG:

    COUNT 用来得到记录的个数
            COUNT(*)
            COUNT(列名)

    AVG得到平均值
            AVG(列名)


SUM & MAX & MIN:

    SUM(列名)  得到指定列的和
    MAX(列名)  得到指定列的最大值
    MIN(列名)   得到指定列最小值

综合练习:

--创建一个teacher表
CREATE TABLE teacher(
       pk_tid INTEGER PRIMARY KEY AUTOINCREMENT,       
       name varchar(20),       
       age INTEGER,       
       sex varchar(20),       
       subject varchar(20),       
       workTime INTEGER ,       
       salary INTEGER
)

--向表中插入数据

INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('张天师',5000,'男','道法',4000,5500);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('唐僧',1000,'男','念佛',800,1200);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('孔子',1200,'男','教书',1000,7000);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('乔峰',1500,'男','做帮主',1300,8000);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('段誉',1400,'男','谈恋爱',1100,1500);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('如来',6000,'男','出谜语',5500,1600);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('欧阳锋',1700,'男','装蛤蟆',1500,4000);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('郭靖',1650,'男','降龙',4000,6000);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('李世民',1100,'男','做皇上',1000,5000);
INSERT INTO teacher (name,age,sex,subject,workTime,salary) VALUES ('洪七公',1750,'男','打狗',1700,5300);

--查询住这些人的平均年龄,平均工资
SELECT AVG(age) '平均年龄',AVG(salary) '平均工资' FROM teacher;

--查询出最高的工资
SELECT MAX(salary) '最高工资' FROM teacher;

--查询工作时间最短
SELECT MIN(workTime) '最短工作时间' FROM teacher; 

--查询年龄最大人的所有信息
SELECT * FROM teacher WHERE age=(SELECT MAX(age) FROM teacher);

--查询工资最少人的所有信息
SELECT * FROM teacher WHERE salary=(SELECT MIN(salary) FROM teacher);

--查询年龄在1500-6000之间所有人的信息,结果按年龄降序排列
SELECT * FROM teacher WHERE age BETWEEN 1500 AND 6000 ORDER BY age DESC;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值