SQL基础(1)

1.如何创建一个表;

CREATE TABLE teacher

(teacher_id VARCHAR(100) NOT NULL default'',

teacher_name VARCHAR(100) NOT NULL default'',

Gender CHAR(1) NULL default''  

Primery key(teache_id)

)COMMENT'老师';

2.如何给表或者语句添加注释

   COMMENT''

3.如何设置默认值

default''

4.如何设置主键

  primary key()

5.如何更新表名

  RENAME TABLE teacher TO teacher b

 

ALTER TABLE

6.如何更新字段名

  ALTER TABLE teacher ALTER COLUMN teacher_name TO teacher_b

7.如何更新字段类型

ALTER TABLE teacher ALTER COLUMN teacher_name VARCHAR(10)

8.如何更新字段NULL值。两种方法

  ALTER TABLE teacher ALTER COLUMN teacher_name VARCHAR(100) NOT NULL

9.如何删除字段的默认值

ALTER TABLE teacher ALTER COLUMN teacher_name DROP DEFAULT

10.表已存在,如何定义主键

ALTER TABLE teacher ADD PRIMEARY KEY ()

11.如果表已经定义主键字段,如何删除主键

ALTER TABLE teacher DROP PRIMARY KEY

12.如何新增字段

ALTER TABLE teacher ADD COLUMN age

13.如何删除字段

ALTER TABLE teacher DROP COLUMN age

 

14.如何删除表

DROP TABLE teacher

 

15.插入整行字段

INSERT INTO teacher VALUES ('T0001','小李','男')

16.如何插入部分字段

INSERT INTO teacher(teacher_id,teacher_name,gender)

VALUES('T0001','小李',NULL);

或者

INSERT INTO teacher(teacher_id) VALUES('T0001');

17.如何一次插入多行数据

INSERT INTO teacher VALUES('T0001','小李',NULL),

                                              ('T0002','小胡','女');

 

SELECT

18.如何克隆一张表

    SELECT * INSERT teacher_back FROM teacher;

或者

CREATE TABLE teacher_back AS SELECT * FROM teacher;

19.如何查询部分列

SELECT teacher_id,teacher_name FROM studert;

SELECT teacher_id FROM student;

SELECT * FROM student;

20.如何升序排序

SELCET teacher_id,teacher_name,age FROM teacher

ORDER BY age ASC;

21.如何倒序排序

使用DESC

或者默认升序

SELCET teacher_id,teacher_name,age FROM teacher

ORDER BY age ;

21.如何以多字段排序(先以年龄然后以名字)

SELCET teacher_id,teacher_name,age FROM teacher

ORDER BY age ASC,teacher_name ASC;

或者

SELCET teacher_id,teacher_name,age FROM teacher

ORDER BY 3 ASC,2 ASC;不建议

22.如何返回前几行

SELECT TOP 10 teacher_id FROM teacher

或者

SELECT TOP 10 * FROM teacher

或者

SELECT teacher_id FROM teacher LIMIT 10

23.如何返回中间几行

SELECT teacher_id FROM teacher LIMIT 20 OFFSET  10;

或者

SELECT teacher_id FROM teacher LIMIT 20,10

 

where

24.如何过滤男性的数据

SELECT  teacher_id,teacher_name,gender FROM teacher

WHERE gender='男';

或者

SELECT * FROM teacher

WHERE gender='男';

25.如何过滤年龄的NULL值

SELCET * FROM teacher WHERE age IS NULL;

26.如何取年龄在15至20岁之间的值

SELECT * FROM teacher WHERE age BETWEEN 15 AND 20;

SELECT * FROM teacher WHERE birth BETWEEN '2003-01-01' AND'2008-01-01';

27.如何过滤集合?

SELECT * FROM teacher WHERE age IN (11,15,20)

28.如何取出所有姓陈的老师

SELECT * FROM teacher

WHERE teacher_name LIKE '陈%';

29.如何取出所有陈_军的老师

SELECT * FROM teacher

WHERE teacher_name LIKE '陈_军';

30.如何取出T0001,T0002,T0003的老师

SELECT * FROM teacher

WHERE teacher_id LIKE 'T000[123]';

31.如何去掉T0001,T0002,T0003的老师(不包含)

SELECT * FROM teacher

WHERE teacher_id LIKE 'T000[^123]';

32.如何取出所有姓陈的男同学?

SELECT * FROM teacher

WHERE teacher_name LIKE '陈%' AND gender='男';

33.如何取出所有姓陈的同学或男同学?

SELECT * FROM teacher

WHERE teacher_name LIKE '陈%' OR gender='男';

34.如何取出所有年龄大于15岁并且姓陈或男性同学?

SELECT * FROM teacher

WHERE age>15 AND (teacher_name LIKE '陈%' OR gender='男');

 

35.数据库中数量单位为股,如何转换为手(1手=100股)后输出?

SELECT

    trans_id,stock_name,price,volume,volume/100

FROM t_stock_trans_dtl;

36.如何根据股票交易表中的单价、数量、计算出交易金额?

SELECT trans_id,stock_name,price,volume,price*volume

FROM t_stock_trans_dtl;

37.如何保留两位小数

SELECT a*1.00/b

38.如何按"洪都航空(sh600316)"展示股票名称和股票代码?

SELECT stock_name + '(' + stock_code +')'

FROM t_stock_trans_dtl;         SQL/ACCES支持

或者

SELECT CONCAT(stock_name,'(',stock_code,'),)

FROM t_stock_trans_dtl;

 

39.如何为表达式取一个别名

SELECT CONCAT(stock_name,'(',stock_code,')') AS stock

FROM t_stock_trans_dtl;

 

40.如何根据买入数量,区分大单(大于3000)、小单(小于等于300)、中单(300~3000)?

SELECT volume,

    CASE WHEN volume >= 3000 THEN '大单',

    CASE WHEN volume >=300 AND volume < 3000 THEN '中单',

    CASE WHEN volume < 300 THEN '小单'

END

FROM t_stok_trans_dtl

    WHERE opt_typ = '买入';

或者

SELECT volume,

    CASE WHEN volume >= 3000 THEN '大单',

    CASE WHEN volume >=300 AND volume < 3000 THEN '中单',

  ELSE小单'

END

FROM t_stok_trans_dtl

    WHERE opt_typ = '买入';

 

41.如何从股票交易明细表中返回正数的交易数量?

SELECT volume,abs(volume) FROM t_stock_trans_dtl;

 

42.如何从股票交易明细表中返回交易费用(只保留2位小数)

SELECT fee,round(fee,2) FROM t_stock_trans_dtl;

 

43.如何根据股票交易明细表中的股票代码,返回股票所在的证券交易所?

SELECT stock_code,left(stock_code,2)FROM t_stock_trans_dtl;

SELECT stock_code,substring(stock_code,1,2) FROM t_stock_trans_dtl;

 

44.如何返回股票交易明细表中交易日期(只返回年月日,去掉时分秒)

SELECT opt_tm,date_format(opt_tm,'%Y-%m-%d')FROM t_stock_trans_dtl;

 

45.如何根据股票交易明细表中的股票代码,返回股票所在证券交易所(要求返回大写字母)?

SELECT stock_code,upper(left(stock_code,2))FROM t_stock_trans_dtl;

 

46.总共有多少名学生?

SELECT COUNT(*) FROM student;

47.所有学生的数学成绩总和?

SELECT SUM(score) FROM student;

48.所有学生的数学成绩最高分?

SELECT MAX(score) FROM student;

49.所有学生的数学成绩最低分?

SELECT MIN(score) FROM student;

50.所有学生的数学成绩平均分?

SELECT AVG(score) FROM student;

 

分组汇总统计

51.如何获取每个班级的数学成绩平均分(因为学生太多,这里先不计算成绩在80分以下的学生),以便比较不同班级的成绩?

SELECT

    class_id,AVG(score)

FROM student

WHERE score>80

GROUP BY class_id ;

52.如何统计不同的交易所的总的买入金额?

SELECT

    left(stock_code,2),sum(price*volume)

FROM t_stock _trans _dtl

WHERE opt_typ='买入'

GROUP BY left(stock_code,2);

 

53.如何统计不同的交易所的不同交易类型的总的交易金额?

SELECT left(stock_code,2),opt_type,sum(price*volume)

FROM t_stock_trans_dtl

GROUP BY left(stock_code,2),opt_type;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值